当前位置:  开发笔记 > 前端 > 正文

Android模拟器存在Geolocation问题

如何解决《Android模拟器存在Geolocation问题》经验,为你挑选了3个好方法。

我现在一直在使用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我没有.

最大的不同是我现在支持代理(新工作),而不是之前.我想我可以在家里试试......不确定这是否重要.



1> kelvinfix..:

您必须将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应用程序.


太棒了,这对我有用,谢谢:)哦,还要注意到其他人尝试你需要在每个getcurrentposition调用之前运行geo修复,从我的实验.难道不确定会更烦人吗?
@MikeIsrael它会变得更加烦人.

2> Kristian..:

我发现这项工作的唯一方法是在触发我正在测试的代码后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.

有关仿真的更多信息,请参见此处



3> 小智..:

我有同样的问题.该解决方案在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.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有