为啥我的网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新?

Posted

技术标签:

【中文标题】为啥我的网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新?【英文标题】:Why does the Google Maps portion of my website only update when the user deletes his/her cookies?为什么我的网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新? 【发布时间】:2019-11-08 18:18:44 【问题描述】:

我正在使用 Maps javascript API,并且正在放置一个中心位于某个设定的纬度和经度的地图。我试图最终将默认坐标设置为用户的位置,但是在测试某些设置的坐标时,页面似乎只在用户删除他/她的 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>

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

【问题讨论】:

改变坐标的代码是什么样的?何时/何地调用它(关于您发布的代码)?请提供一个 minimal reproducible example 来证明您的问题。 @geocodezip 现在我只是手动更改它,但稍后我会使用var default_coords; navigator.geolocation.getCurrentPosition(function(position) default_coords = lat: position.coords.latitude, lng: position.coords.longitude; ); 并将center: lat: -34.397, lng: 150.644 更改为center: default_coords 如果你只是想把它放在这里,一定要对你的密钥设置一个配额/限制。 您是如何导致您要求解决的问题的?请提供一个 minimal reproducible example 来证明您所询问的问题。我不明白 cookie 是如何参与测试的。 【参考方案1】:

看起来这种情况正在发生,因为 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);
);

希望这会有所帮助!

【讨论】:

以上是关于为啥我的网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的浏览器上的谷歌地图一直在加载? (德尔福 XE6 和安卓)

基于用户标记的谷歌标记

为啥谷歌地图在几次回帖后冻结页面

谷歌地图 - 点击引脚后标记部分

iPhone 应用程序内的谷歌地图集成

如何在您的网站中嵌入样式化的谷歌地图