【问题标题】:W3C Geolocation API not working in ChromeW3C 地理定位 API 在 Chrome 中不起作用
【发布时间】:2011-09-05 02:24:01
【问题描述】:

以下代码适用于 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 Geolocation API。

【问题讨论】:

    标签: javascript firefox google-chrome geolocation


    【解决方案1】:

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

    • 确保您没有在 Chrome 中禁用位置跟踪:Options &gt; Under the Hood &gt; Content Settings &gt; Location
    • 由于安全限制,使用file:/// 方案加载的资源不允许访问位置。见HTML 5 Geo Location Prompt in Chrome

    【讨论】:

      【解决方案2】:

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

      详情请见https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

      【讨论】:

        【解决方案3】:

        2017 年:

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

        Geolocation API Removed from Unsecured Origins in Chrome 50

        【讨论】:

          【解决方案4】:

          它对我来说很好 - 在 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>

          【讨论】:

            【解决方案5】:

            Geolocation API 可让您在征得用户同意的情况下发现用户的位置。您可以将此功能用于将用户引导至目的地和对用户创建的内容进行地理标记等事情;例如,标记照片的拍摄地点。

            Geolocation API 还可以让您查看用户的位置,并在他们四处走动时随时关注他们,始终征得用户同意(并且仅在页面打开时)。这创造了许多有趣的用例,例如与后端系统集成,以便在用户在附近时准备收货订单。

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-22
              • 1970-01-01
              • 2012-08-04
              • 2012-02-24
              • 2015-11-26
              • 2012-03-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多