我现在一直在使用Android和2.2仿真器,刚刚开始遇到问题。我的地理定位未在模拟器中设置。起初我认为这是PhoneGap 0.92的一个问题,但在恢复到.91并打开一个较旧的项目之后也是如此。在DDMS中,我的坐标被设置,我'发送'它们。我也telnet并发出geo fix命令,我得到了一个OK响应。似乎一切都很好,但由于某种原因,模拟器仍然没有任何线索。
我发现了一些较旧的帖子:设置时区。我做到了仍然没有运气。我甚至使用浏览器并转到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仿真器上运行它,这也无法正常工作。有趣的是在日食时,我在DDMS并将坐标发送到2.1我'看到'确认它已经在模拟器中发送但是2.2我没有。
最重要的区别是我现在支持代理(新工作),而不是之前。我想我可以在家里试试......不确定这是否重要。
答案 0 :(得分:12)
您必须将enableHighAccuracy放入getCurrentPosition,例如:
navigator.geolocation.getCurrentPosition(onSuccess, onError, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true });
接下来,你必须telnet到模拟器,并geo修复你想要的位置(经度,纬度):
kelvin@locahost:~$ 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应用程序。
答案 1 :(得分:8)
我发现这项工作的唯一方法是在触发我正在测试的代码后,telnet到模拟器并发出“geo fixitudeitude latitude”。像这样的东西仿效挪威特隆赫姆的GPS坐标(仿真器的端口通常是5554,但这可能因你的设置而异):
kristian@bergman:~$ 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
答案 2 :(得分:6)
我遇到了同样的问题。解决方案在http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation(向下滚动)结束时:
“Android Quirks
除非将enableHighAccuracy选项设置为true,否则Android 2.x模拟器不会返回地理位置结果。
{enableHighAccuracy:true}“
所以你必须在你的navigator.geolocation.getCurrentPosition和navigator.geolocation.watchPosition调用中设置enableHighAccuracy。
答案 3 :(得分:0)
请在geolocationOptions { enableHighAccuracy: true }
navigator.geolocation.getCurrentPosition(suc,fail);
它适用于我。
除非将enableHighAccuracy选项设置为true,否则Android 2.x模拟器不会返回地理位置结果。
在DDMS中,我的坐标必须设置并“发送”它们。