2011-04-23 123 views
0

我寫了一個地圖頁面,使用地理位置來檢測用戶的位置。當用戶點擊一個按鈕,這個JavaScript被稱爲:瀏覽器的地理位置顯示兩個初始位置

if (navigator.geolocation) { 
wpid = navigator.geolocation.watchPosition(function (position) { 
     setUserPosition(position, "Your location", pollUserPosition); 
     }, 
     function() { handleNoGeolocation(true); }, 
     { enableHighAccuracy: false, maximumAge: 30000, timeout: 10000 } 
    ); 
} 

據我瞭解,watchPosition將直到它被告知停止啓動輪詢用戶的位置。這是通過調用clearWatch並從watchPositon調用傳入wpid來完成的。 setUserPosition會根據位置上的位置在地圖上創建一個標記。當我在移動Safari瀏覽器中測試此頁面時,有時會在地圖上標出兩個初始位置。有誰知道我爲什麼會返回兩個地點,以及我只能返回一個地點?是否因爲在iPhone上使用單元格連接和WiFi連接返回位置?

更新: 作爲一項測試,我關閉了手機上的WiFi並再次測試了地圖頁面。不幸的是,當我打電話給watchPosition時,我仍然得到兩個初始位置。

回答

0

with watchPosition,如果位置數據隨設備移動或更準確的地理信息到達而變化,您將獲得更新的回調位置信息。

所以,如果你想只有一個位置嘗試使用:

navigator.geolocation.getCurrentPosition 

這應該只返回一個位置。你已經嘗試過了嗎?

+0

我知道getCurrentPosition只會獲得一次用戶的位置,但對於我的項目,我需要不斷更新用戶的位置。我遇到的問題是,當我開始呼叫watchPostion時,看起來第一次成功的回撥返回2個位置。 – Notorious2tall 2011-04-26 15:35:11

+0

你能爲我們輸出這些職位(console.log)嗎?所以你說這是返回陣列的位置[]?確定這不是2次成功的回調? – capdragon 2011-04-26 17:05:53

+0

我參加了一項測試,對於發生的事情我有一些新的理論。我注意到有時候,watchPosition會在幾毫秒內返回兩個值。在一些測試中,我發現結果的時間戳在彼此的500毫秒之內。我認爲現在發生的事情是,由於這些調用非常接近,所以有兩個對Google地圖的請求,它們都以相同的響應呈現。現在這是我的理論。我要添加一些代碼來檢查地圖是否仍然在再次調用之前呈現。 – Notorious2tall 2011-04-27 01:17:36