在getCurrentPosition函数中设置数据

时间:2011-09-01 17:30:16

标签: javascript api google-maps geolocation

我正在做下一个:

首先 - 我正在检查我是否已经加载了纬度和经度数据。如果我有,我将其保存到名为“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();

谢谢。

1 个答案:

答案 0 :(得分:0)

您在getCurrentPosition内设置了一个不同的变量。 我建议研究变量范围。 查看this问题。

- 编辑 -

我没有意识到你使用的功能是Javascript的一部分,我以为你是从某个地方写过/得到的。

另外,我对范围进行了纠正。由于您使用的是数组,因此范围很好,您应该可以在回调函数中设置它。

当我在console.loglocation时,我运行了您的代码并获得了一些奇怪的打印输出。 我猜了一下,看来该位置是reserved word。我敢打赌,如果你将location的名称改为其他名称,你的代码应该可以正常工作。

- 编辑 -

我应该早点意识到这一点,因为locationwindow.location相同,这是浏览器栏位置!