2010-11-12 13 views
5

我現在一直在使用Android和2.2模擬器,剛開始遇到問題。我的地理位置沒有在模擬器中設置。起初,我認爲這是PhoneGap 0.92的一個問題,但在恢復到.91並打開一個較舊的項目之後,情況也是如此。在DDMS中,我的座標被設置,並且「發送」它們。我也telnet和發出地理修復命令,我得到一個確定的迴應。看起來一切都很好,但由於某種原因,仿真器仍然沒有任何線索。Android模擬器存在地理定位問題

我發現一些舊帖子重新:設置時區。我做到了。仍然沒有運氣。我甚至使用瀏覽器並轉到html5demos.com/geo來查看它是否能找到我,而不是。

這用於工作,不知道自那時以來發生了什麼。我更新了我的Java 1.6.0.22版本。 Android SDK是2.2,API 8,修訂版2.

任何提示或技巧,將不勝感激。我被困在這一點上。

我的PhoneGap/JS調用:

var getLocation = function() { 
    var suc = function(p){ 
     alert(p.coords.latitude + " " + p.coords.longitude); 
    }; 
var fail = function(error){ 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
    }; 
    navigator.geolocation.getCurrentPosition(suc,fail); 
} 

的 '失敗' 持續發生。錯誤代碼2.最後一個位置提供程序被禁用。

--UPDATE 仍然存在相同的問題。我發現了一個我在夏天使用的舊的地圖應用程序,它是2.1。所以我重新編譯並在2.1模擬器上運行它,這也不起作用。有趣的是在eclipse中,當我在DDMS中併發送座標到2.1我'看到'確認它已經在模擬器中發送,但是2.2我不知道。

最大的區別是我現在在一個代理現在(新工作)之前,我沒有。我想我可以在家嘗試......不知道這是否重要。

+0

你有沒有試過/它在電話上工作? – davejohnson 2010-11-19 09:21:26

回答

5

我有同樣的問題。解決的辦法是在http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation末(向下滾動):

「的Android怪癖

除非enableHighAccuracy選項設置爲true,而Android 2.x的模擬器將不會返回地理位置結果

{。 enableHighAccuracy:true}「

所以你必須在你的navigator.geolocation.getCurrentPosition和你的navigator.geolocation.watchPosition調用中設置enableHighAccuracy。

+0

感謝您的提示。但是......仍然沒有工作:(我認爲這是一個與模擬器(也許)的問題。首先,每當我啓動它,我得到愚蠢的日本鍵盤出於某種原因。如果我然後去一個純粹的HTML5應用程序從Chrome瀏覽器獲取位置信息,它不起作用,像這樣 - > http://html5demos.com/geo。在我的瀏覽器中可以正常工作,但是不能在仿真器瀏覽器上正常工作 – jdruid 2010-12-02 20:12:16

8

我發現完成這項工作的唯一方法是在觸發我正在測試的代碼後,telnet到模擬器併發出「geo fix longitude latitude」。像這樣的東西模擬GPS座標挪威特隆赫姆(仿真器的端口通常是5554,不過這可以通過設置不同):

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 10.40 63.40 
OK 
quit 
Connection closed by foreign host. 

有關仿真的更多信息,可以發現here

+0

謝謝,我也試過了,仍然沒有運氣 – jdruid 2010-12-06 14:26:24

+0

我測試了html5demos.com/geo,這對我來說也不起作用。但它適用於我所有的網站... – Kristian 2010-12-06 19:41:43

12

你必須把enableHighAccuracy到getCurrentPosition,例如:

navigator.geolocation.getCurrentPosition(onSuccess, onError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 

接下來,你必須遠程登錄到模擬器,和地緣固定位置(經度,緯度)你想:

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 101.689453 3.074695 
OK 
quit 
Connection closed by foreign host. 

然後運行您的PhoneGap應用程序。

+3

真棒,爲我工作,謝謝:)哦也注意到任何其他人試圖你需要從我的實驗中,在每個getcurrentposition調用之前運行geo修復程序。難道這不是很確定 – MikeIsrael 2012-04-02 14:32:48

+2

@MikeIsrael它會很難讓它更煩人。 – mraaroncruz 2012-12-03 21:45:29

+0

工作非常好! – 2014-02-06 08:27:36

0

navigator.geolocation.getCurrentPosition(suc,fail);

它的工作對我補充geolocationOptions { enableHighAccuracy: true }

除非enableHighAccuracy選項設置爲true,否則Android 2.x模擬器不會返回地理定位結果。

在DDMS中,我的座標必須設置並且'發送'它們。