我现在一直在使用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我没有.
最大的不同是我现在支持代理(新工作),而不是之前.我想我可以在家里试试......不确定这是否重要.
您必须将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应用程序.
我发现这项工作的唯一方法是在触发我正在测试的代码后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.
有关仿真的更多信息,请参见此处
我有同样的问题.该解决方案在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.