【问题标题】:Google Maps API v3 Geolocation not working in Google ChromeGoogle Maps API v3 Geolocation 在 Google Chrome 中不起作用
【发布时间】:2013-11-04 12:26:42
【问题描述】:

我正在使用 Google Maps API v3 Geolocation 来获取用户的实际位置。我从 Google Developers 中找到了这篇文章:

https://developers.google.com/maps/documentation/javascript/examples/map-geolocation

这是我的代码(相当于谷歌地图示例的代码):

<head>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>

<script>
// Note: This example requires that you consent to location sharing when
// prompted by your browser. If you see a blank space instead of the map, this
// is probably because you have denied permission for location sharing.

var map;

function initialize() {
  var mapOptions = {
    zoom: 6,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  // Try HTML5 geolocation
  if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      var pos = new google.maps.LatLng(position.coords.latitude,
                                       position.coords.longitude);

      var infowindow = new google.maps.InfoWindow({
        map: map,
        position: pos,
        content: 'Location found using HTML5.'
      });

      map.setCenter(pos);
    }, function() {
      handleNoGeolocation(true);
    });
  } else {
    // Browser doesn't support Geolocation
    handleNoGeolocation(false);
  }
}

function handleNoGeolocation(errorFlag) {
  if (errorFlag) {
    var content = 'Error: The Geolocation service failed.';
  } else {
    var content = 'Error: Your browser doesn\'t support geolocation.';
  }

  var options = {
    map: map,
    position: new google.maps.LatLng(60, 105),
    content: content
  };

  var infowindow = new google.maps.InfoWindow(options);
  map.setCenter(options.position);
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
    <div id="container">
        <div class="entry-content">
            <div class="blogtitle">IT</div><p>&nbsp;</p></td><td> </td><td><p>&nbsp;</p></td></tr></tbody></table><p>&nbsp;</p>
            <div id="map-canvas"></div><!-- map-canvas end -->
        </div><!-- entry-content end -->
    </div><!-- container end -->
</body>

这在 Firefox 中运行良好,但在 Google Chrome 和 Safari 中却不行。我认为因为 Chrome 和 Safari 是 webkit 浏览器。但我不知道如何解决它。

有人可以帮帮我吗?

【问题讨论】:

  • 哪一点不起作用?您看不到地图,无法获取用户的位置,出现 javascript 错误?
  • 出现错误:Error: The Geolocation service failed. 然后标记指向俄罗斯某处的森林(我在瑞士...)

标签: javascript google-maps google-maps-api-3 geolocation


【解决方案1】:

我找到了this

这似乎是文件协议的安全限制。看起来您需要从服务器本地托管它。

我已经使用本地服务器测试了您的代码,它运行良好。 希望我能帮上忙。

【讨论】:

  • 嗯。谢谢,你知道我如何从本地服务器托管它吗?一个例子?
  • 取决于您使用的操作系统。我正在为 OSX 使用 MAMP (mamp.info)。如果您使用的是 Windows,请查看 XAMP。只需将您的 html/php/css/whatsoever 文件放在 htdocs 文件夹中并启动服务器。这是 MAMP 的一个小常见问题解答 (mamp.info/en/documentation/faq.html)
  • 你是说XAMPP?我正在使用窗户。在我的公司,我们不使用 XAMPP。我们使用 IIS。你知道如何以这种方式托管它吗?
  • 是的,我的意思是 XAMPP。我对IIS一无所知。试试 XAMPP,它非常简单易用!
  • 我已经知道 XAMPP。我在家里用它来创建一些测试网站(只是为了提高我的 HTML/HTML5、CSS/CSS3 和 jQuery 技能)。但是在我们公司,他们不想使用 XAMPP,因为他们在很多年前就使用 IIS :) 但是感谢您尝试帮助我,我想我会弄清楚并在此处发布解决方案 :)
【解决方案2】:

对于您遇到问题的浏览器,请尝试使用 HTML5 geolocation API 而不是 Google 地图。

你可以找到参考here

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2020-08-11
    • 1970-01-01
    • 2016-10-22
    • 2013-11-16
    • 2013-10-04
    相关资源
    最近更新 更多