javascript - 为什么我网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新?
问题描述
我正在使用 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>
问题是即使我在代码中更改地图位置也不会改变。
解决方案
看起来这种情况正在发生,因为 HTML5 Geolocation 需要用户的明确许可才能获取他们的位置。
因此,不能单独将用户的当前位置作为地图的中心。如果用户(或他们的浏览器设置)没有授予权限,或者浏览器本身不支持地理定位,您需要一个备用位置。
试试下面的代码:
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);
});
希望这可以帮助!
推荐阅读
- regex - 从 Nifi 属性中提取文本
- mysql - SQL - 获取上一行并使用条件复制它
- javascript - 如何按命名导出默认导入?
- jquery - 在 jQuery 自动完成功能中访问 $(this)
- python - 通过用户输入访问 Python 文件
- php - 如何使用 Jenkins 连接 EC2 窗口实例并安装 chrome
- javascript - 无法获得要在页面上显示的 json 请求。用户需要选择一个值并发送到请求
- regex - 不以“My”或“By”开头的字符串的正则表达式
- file - 使用自定义数据类型创建 txt 文件
- vim - Vim delete word 有时会进入插入模式?