Javascript 谷歌地图API在我中断后继续工作,不是吗';否则
在定义pos后的任何时间中断,然后继续时,此代码起作用。但当我正常运行它时,它不会显示任何内容。我做错了什么Javascript 谷歌地图API在我中断后继续工作,不是吗';否则,javascript,google-maps,Javascript,Google Maps,在定义pos后的任何时间中断,然后继续时,此代码起作用。但当我正常运行它时,它不会显示任何内容。我做错了什么 function initialize() { var pos; if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { pos = new google.maps.LatLng(position.coo
function initialize() {
var pos;
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
}, function() {
handleNoGeolocation(true);
});
}
else { // Browser doesn't support geolocation
handleNoGeolocation(false);
}
var myOptions = {
zoom: 7,
center: pos,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
也许API调用需要一点时间,当它中断时,它会得到一点时间来检索它需要的任何数据,所以它能够显示它?这仅仅是猜测,但你可以试着延迟一下,看看会发生什么。很有趣。你有错误吗?你能分享吗?您可能还希望使用console.log()进行调试,并将try/catch块包装在其周围。我认为某些旧浏览器可能存在一些问题。
getCurrentPosition(f,…)
是异步的,这意味着在成功完成请求后会调用回调f
。但此时,函数initialize()
中的局部变量pos
不再在范围内
您可以通过在全局窗口范围中定义
pos
来解决此问题。这应该是可行的,pos
将由回调函数分配。但是,您不知道此任务何时发生。处理此问题的最佳方法是直接在回调中使用pos
,例如将其写入文本字段或存储在数据库中等。我没有收到任何错误。我也在使用最新的Safari。与铬的行为相同。奇怪。