我有一个谷歌地图,可以在初始页面加载时正确显示,并显示正确的地点标记(从自定义Web服务检索)。但是我提示用户分享他们的位置,当他们这样做时,地图就会消失。我正在提示用户使用以下方式分享他们的位置:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setPosition, error);
} ...
这很好用,并且在被调用的'success'函数(setPosition)中,我使用以下内容刷新地图:
//load map object and show map
this.map = new google.maps.Map(
document.getElementById(this.mapElementId),
{
zoom: this.currentZoom,
center: this.startPos,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
);
'this.map'已成功填充谷歌地图对象。 'document.getElementById(this.mapElementId)'工作正常,找到我希望地图出现的<div>
,并且正确获取'currentZoom'和'startPos'的坐标。
以前当地图是<iframe>
的一部分时,这一切都运行正常 - 我现在已将代码内联移动到之前包含<iframe>
的页面中(它看起来不像跨域问题,我已经验证了这一点)
更新
(实际上,请忽略我之前的更新 - 我得到的标记会有所不同,具体取决于我是否正在调试。当我允许共享我的位置而没有Firebug时,这是工作版和破损版的标记调试器正在运行。显示的“工作”版本中的蓝线突出显示包含Google地图的div。):
WORKING:
BROKEN:
答案 0 :(得分:0)
事实证明,在我的'setPosition'回调函数中(当浏览器能够成功请求用户的地理位置时使用),我隐藏了一个<div>
,当地理位置请求是不成功。由于某些原因,隐藏<div>
会阻止地图显示,即使它后来未在任何代码中引用,也与包含Google地图的<div>
无关。我已经问了一个单独的问题,关于可能发生的事情,以及如何可靠地清除错误信息: