使用GPS的地理定位非常慢的Android应用程序

时间:2014-08-03 21:26:20

标签: android html5 gps geolocation intel-xdk

我使用intel xdk和cordova作为使用地理位置的Android应用程序,这是我使用的代码:

if(navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(geolocalizacion,error,{enableHighAccuracy:true, maximumAge:Infinity, timeout:100000});

  } else {   
    handleNoGeolocation(false);
  }

我不想使用谷歌定位服务'因为,如果禁用该选项,有些人可能会在设置中找到它时迷路,所以我使用enableHighAccuracy:true来使用GPS。

然而,这需要花费很多时间,差不多一分钟就可以称之为成功功能' geolocalizacion'当应用程序在室内使用时。我知道GPS在室外更好(在这种情况下它需要5或7秒),但我认为1分钟对室内来说太多了。

我做错了吗?

有没有办法通过GPS加快地理定位?

或激活Google位置服务的方式'没有用户做任何事情?。

2 个答案:

答案 0 :(得分:2)

如果您不在外面,GPS卫星发送的GPS信号非常弱。即使您在室外,天气条件,高层建筑和其他大型金属结构也可能隐藏或降低GPS信号。此外,典型手机或平板电脑内部的GPS接收器是非常低等级的接收器和天线,由于相关的价格和物理尺寸的折衷,它们不如更昂贵的专用GPS设备。

你应该采取两种方法:使用"粗略"获得初始读数。地理读取,启用地理缓存。粗读将使用wifi,网络,GPS和缓存读数,并根据您指定的参数返回它的最佳估计值,通常在非常合理的时间范围内。

然后,在你建立了一个近似位置(这可能是非常准确的,如@SeahawksRdaBest所指出的,如果基于当前的wifi),切换到"罚款"位置设置,以获得准确的位置。您的应用的这一部分可以在后台运行,因此它不会中断您的应用的响应速度,然后可以更新您的应用中的位置信息,因为更准确的位置数据可用。

要记住的一件事是,许多用户关闭了GPS,因为它会严重降低电池寿命。如果您的所有应用需求都是"找到附近的餐馆"然后粗略的位置应该足够好,因为你可能更感兴趣将目的地放在地图上。这将更加适合电池使用,这也是最近Android设备上的地理位置设置发生变化的原因之一,使应用程序难以以编程方式启用GPS。

我看到你已经添加了intel-xdk标签,所以你可能想要查看我在https://github.com/xmnboy/hello-cordova放置的这个小地理位置测试应用程序。它需要一些工作,但应该帮助您在粗略和精细设置之间进行一些实验。

答案 1 :(得分:0)

我认为你可以将你的应用程序多样化一点。

例如,如果您在室内并且有WiFi连接,为什么不使用它来对您的位置进行三角测量? WiFi非常准确,因为理论上它覆盖了一个很小的空间,因此手机可以准确地知道它的位置并快速返回一个位置。(如果按照我的经验做到这一点通常<10秒)。

如果未找到Wifi连接(室外)。您可以随时返回GPS以提供坐标。无论如何,加Gps在外面“最快”。

查看这些页面:Stackoverflow discussionLocation Manager Android。 如果你想真正想象,你甚至可以使用Geocoder Android库来获取人类可读形式的位置地址等。