W3C地理定位API不适用于Chrome

W3C Geolocation API not working in Chrome

本文关键字:不适用 适用于 Chrome API 定位 W3C      更新时间:2023-09-26

以下代码适用于Firefox,但不适用于Google Chrome:

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <script type="text/javascript">
            var successCallback = function(data) {
                console.log('latitude: ' + data.coords.latitude + ' longitude: ' + data.coords.longitude);
            };
            var failureCallback = function() {
                console.log('location failure :(');
            };
            var logLocation = function() {
                //determine if the handset has client side geo location capabilities
                if(navigator.geolocation){
                   navigator.geolocation.getCurrentPosition(successCallback, failureCallback);
                }
                else{
                   alert("Functionality not available");
                }
            };
            logLocation();
            setTimeout(logLocation, 5000);
        </script>
    </head>
    <body>
        <p>Testing</p>
    <body>
</html>

怎么回事?我认为Google Chrome应该支持W3C地理定位API。

非常适合我-在Win 7上同时使用Chrome 11和Firefox 4.0.1

  • 确保您没有在Chrome中禁用位置跟踪:Options > Under the Hood > Content Settings > Location
  • 由于安全限制,不允许使用file:///方案加载的资源访问该位置。请参阅Chrome中的HTML 5地理位置提示

如果您的域不安全(例如HTTP而不是HTTPS),则不允许您访问Chrome中的位置。这是自Chrome版本50(太平洋标准时间2016年4月20日下午12点)。

请参阅https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only详细信息。

2017年:

注意:从Chrome 50开始,Geolocation API将仅适用于HTTPS等安全上下文。如果您的网站托管在非安全来源(如HTTP)上,则获取用户位置的请求将不再起作用。

地理定位API从Chrome 50中的不安全来源中删除

它对我来说很好-在Win 7 上使用Chrome 11和Firefox 4.0.1

确保您没有在Chrome中禁用位置跟踪:选项>引擎盖下>内容设置>位置请允许检查权限后,请运行

运行后,它将是sucesscallback,否则它将进入errorcallback

function sucesscallback (position)
{
var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
   
    var myOptions = {
        zoom: 15,
        center: userLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var mapObject = new google.maps.Map(document.getElementById("googleMap"), myOptions);
    var marker = new google.maps.Marker({
        map: mapObject,
        position: userLatLng
    });
   
}

    function failureCallback(error) {
    
        switch (error.code) {
            case 1:
                alert("User denied the request for Geolocation.");
                break;
            case 2:
                alert("Location information is unavailable. Please ensure Location is On");
                break;
            case 3:
                alert("timeout");
                break;
            case 4:
                alert("An unknown error occurred.");
                break;
        }
    }
<div id='googleMap' style='width:300px;height:300px;'>
</div>

Geolocation API允许您在用户同意的情况下发现用户的位置。您可以将此功能用于引导用户到达目的地和对用户创建的内容进行地理标记;例如标记照片的拍摄位置。

Geolocation API还允许您查看用户的位置,并在用户移动时随时监视用户,始终征得用户的同意(并且仅在页面打开时)。这创建了许多有趣的用例,例如与后端系统集成,以便在用户附近准备收集订单。

在使用Geolocation API时,您需要注意许多事情。本指南将引导您了解常见的用例和解决方案。

https://developers.google.com/web/fundamentals/native-hardware/user-location/?hl=en