2012-03-16 65 views
7

停止當我運行地理位置並不在PhoneGap的

window.onload = function() { 
    document.addEventListener("deviceready", getGeolocation); 
} 

function getGeolocation() { 
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, {maximumAge: 0}); 
} 

function getGeolocation() { 
watchGeoMarkerProcess = navigator.geolocation.watchPosition(updateCallback, errorCallback); 
} 

然後

function updateCallback(position) { 
    if (position.coords.accuracy < 100) { 
      navigator.geolocation.clearWatch(watchGeoMarkerProcess); 
    } 
} 
我在iOS 5應用

使用PhoneGap的它似乎卡住了,因爲地理位置指示器圖標停留在頂部欄中,並且它永遠不會消失,這是我的意思GPS不會關閉。另外,有時我根本沒有得到任何協調,拋出超時錯誤。

我不認爲代碼有什麼問題,因爲它作爲一個web應用程序工作得很好。

任何想法?

+0

FYI,這似乎是在最新的科爾多瓦(FTW)一個非問題。現在使用'ondeviceready'和'watchPosition' +'clearWatch'工作正常。 – jenswirf 2012-03-30 09:45:22

回答

3

navigator._geo是「真正」的實施我相信。我見過最近的git提交,他們試圖超越navigator.geolocation,但顯然在iOS上失敗。看着phonegap的源代碼給我的想法,而不是嘗試真正的電話。

這裏是git的承諾: http://mail-archives.apache.org/mod_mbox/incubator-callback-commits/201203.mbox/%[email protected]%3E

下面是對這個問題的另一個線程: https://groups.google.com/forum/?fromgroups#!topic/phonegap/W32yYpV28W8

更新:我有現在的成功一定程度: 編輯您的phonegap.js,註釋掉線3451-3453看起來像這樣: __proxyObj(navigator.geolocation,navigator._geo,...

你會得到一個醜陋的許可警報..但位置應該工作。變化是你現在將使用safari的位置檢測功能,而不是PhoneGaps。

UPDATE2:..與PhoneGap的問題竟然是與另一個JavaScript庫,在這種情況下dragdealer.js衝突。因此,請仔細檢查任何其他您正在使用的JavaScript中的「位置」或「位置」等可疑變量名稱。由於某些原因,這種衝突在iOS以外的平臺上不成問題。

+0

這應該是在回覆wije下面。 – Ryan 2012-03-23 16:14:41

+0

謝謝你看看。太糟糕了,導致另一個大問題,這意味着我不能真正使用它。至於JS衝突,至少對我來說這是一個非問題,因爲我根本沒有使用任何庫。 – jenswirf 2012-03-26 11:19:45

1

對於什麼值得我有同樣的問題,這些修復程序無法正常工作。但他們可能對你:

  • 確保你的位置onDeviceReady()被調用後
  • 嘗試使用navigator._geo.getCurrentPosition
+0

那裏有更多的navigator._geo.getCurrentPosition解決方案嗎?這似乎是一些自定義的方法,我沒有.. – jenswirf 2012-03-23 14:52:30

0

我有同樣的問題,雖然在Android上。

添加enableHighAccuracy選項導致它開始工作:

navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true});