2011-09-01 29 views
0

我在做下一个:在getCurrentPosition函数中设置数据

第一件事 - 我检查是否已经加载了纬度和经度数据。如果我有,我将它保存到名为“location”的数组中。

第二件事 - 如果我没有任何加载的数据,我试图获得当前位置。之后,我试图保存当前位置的经度和纬度。 最后,我打电话给setMap();函数,我检查位置数组以及我在哪里生成地图。

问题:

嗯,我说这里面......“getCurrentPosition”,我想设置当前位置到“位置”阵列,在那之后,我试图把里面的值的setMap();功能。这是问题,但只有当我在“getCurrentPosition”中设置“位置”值时。如果我之前手动设置“位置”值(从“数据”数组),一切工作正常。 此外,当我在“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

好吧,我发现了一些有趣的在这里: http://stackoverflow.com/questions/7189492/javascript-assigning-the-return-value-of-a-callback-function-to-global - 变化 – dperitch

回答

0

您正在设置getCurrentPosition以内的其他变量。 我会建议研究变量的范围。 检查出this的问题。

- 编辑 -

我不知道,你正在使用的功能是JavaScript的一个部分,我还以为你已经写/从什么地方得到它。

此外,我正在纠正有关范围。既然你使用的是数组,范围没问题,你应该可以在回调函数中设置它。

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

- 编辑 -

我实际上已经意识到了这一点早,因为location是一样的window.location,这是浏览器栏的位置!

+0

感谢您的回答...我正在研究这个问题,但仍然没有解决方案。 – dperitch

+0

我假设你的'getCurrentPostion'函数返回对象中的当前位置,是否正确? – AsherMaximum

+0

你的代码正在做的是传递一个匿名函数_to_'getCurrentPostion',而不是从中获取一个值。 – AsherMaximum