2011-09-01 30 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