为什么我网站的 Google 地图部分仅在用户删除 his/her cookie 时更新?

Why does the Google Maps portion of my website only update when the user deletes his/her cookies?

我正在使用地图 JavaScript API 并放置一张地图,其中心位于某个设定的纬度和经度内。我试图将默认坐标设置为最终用户的位置,但在测试某些设置坐标时,页面似乎仅在用户删除 his/her cookie 并刷新页面时更改坐标。我怎样才能让用户不必删除他们的 cookie 来接收来自 JavaScript 的最新坐标?

我的代码没有按要求更新:

var map;
function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: -34.397, lng: 150.644},
      zoom: 8
    });
}

编辑:我正在手动更改它并暂时刷新页面,但稍后我会使用

自动设置位置
<div id="map" style="height: 400px; width: 100%;"></div>
<script>
var map;
var default_coords;
navigator.geolocation.getCurrentPosition(function(position) {
  default_coords = {lat: position.coords.latitude, lng: position.coords.longitude};
});

function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
      center: default_coords,
      zoom: 8
    });
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=MY_KEY&callback=initMap" async defer></script>

问题是即使我在代码中更改地图位置也不会改变。

看起来这是因为 HTML5 地理定位需要用户的明确许可才能获取他们的位置。

因此,您不能单独使用用户的当前位置作为地图的中心。如果用户(或他们的浏览器设置)未授予权限,或者浏览器本身不支持地理定位,则您需要一个后备位置。

试试下面的代码:

map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644}, // any hard-coded lat/lng
    zoom: 8
});

navigator.geolocation.getCurrentPosition(function(position) {
  var default_coords = {lat: position.coords.latitude, lng: position.coords.longitude};
  map.setCenter(default_coords);
});

希望对您有所帮助!