我正在做下一个:
首先 - 我正在检查我是否已经加载了纬度和经度数据。如果我有,我将其保存到名为“location”的数组中。
第二件事 - 如果我没有任何加载数据,我正试图获得当前位置。在那之后,我试图保存当前位置的纬度和经度。 最后,我正在调用setMap();函数,我检查位置数组和我正在生成地图。
问题:
好吧,就像我说的那样......在“getCurrentPosition”中,我试图将当前位置设置为“location”数组,之后我试图将这些值放在setMap()中;功能。这是问题,但只有当我在“getCurrentPosition”中设置“location”值时。如果我之前(从“数据”数组)手动设置“位置”值,一切正常。 此外,当我在“getCurrentPosition”中调用setMap()函数时,一切正常......但是当我从外部调用它时,将无法正常工作。 有人可以解释我发生了什么,我该怎么办?
这是我的代码:
location = new Array();
if (data.lat) {
location['lat'] = data.lat;
location['lng'] = data.lng;
} else {
if (!navigator.geolocation) {
//
} else {
navigator.geolocation.getCurrentPosition(function(position) {
location['lat'] = position.coords.latitude;
location['lng'] = position.coords.longitude;
});
}
}
setMap();
谢谢。
答案 0 :(得分:0)
您在getCurrentPosition
内设置了一个不同的变量。
我建议研究变量范围。
查看this问题。
- 编辑 -
我没有意识到你使用的功能是Javascript的一部分,我以为你是从某个地方写过/得到的。
另外,我对范围进行了纠正。由于您使用的是数组,因此范围很好,您应该可以在回调函数中设置它。
当我在console.log
上location
时,我运行了您的代码并获得了一些奇怪的打印输出。
我猜了一下,看来该位置是reserved word。我敢打赌,如果你将location
的名称改为其他名称,你的代码应该可以正常工作。
- 编辑 -
我应该早点意识到这一点,因为location
与window.location
相同,这是浏览器栏位置!