首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GPS进行地理定位对于android应用来说非常慢

使用GPS进行地理定位对于android应用来说非常慢
EN

Stack Overflow用户
提问于 2014-08-04 05:26:20
回答 2查看 2.5K关注 0票数 0

我正在使用intel xdk和cordova开发一个使用地理定位的android应用程序,下面是我使用的代码:

代码语言:javascript
复制
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定位更快?

或者是一种不用用户做任何事情就能激活“谷歌位置服务”的方法?

EN

回答 2

Stack Overflow用户

发布于 2014-08-05 00:14:58

如果你不在户外,GPS卫星发射的GPS信号非常弱。即使你在户外,天气条件、高楼和其他大型金属结构也会隐藏或降低GPS信号。此外,典型的手机或平板电脑中的GPS接收器是非常低级的接收器和天线,由于相关价格和物理尺寸的折衷,它们的功能不如更昂贵的专用GPS设备。

你真的应该采取双管齐下的方法:在启用地理缓存的情况下,使用“粗略”的地理读数获取初始读数。粗略的读数将使用wifi、网络、GPS和缓存读数,并根据您指定的参数返回最佳估计,通常在非常合理的时间范围内。

然后,在你建立了一个大致的位置之后(正如@SeahawksRdaBest指出的,如果基于当前的wifi,这个位置可能非常精确),切换到“精细”位置设置以获得准确的位置。你的应用程序的这一部分可以在后台运行,这样它就不会中断应用程序的响应,然后可以在获得更准确的位置数据时更新应用程序中的位置信息。

要记住的一件事是,许多用户关闭了GPS,因为它严重降低了电池寿命。如果你的应用程序只需要“找到附近的一家餐馆”,那么粗略的位置就足够好了,因为你可能更感兴趣的是将目的地放在地图上。这将对电池更加友好,这也是较新的Android设备上的地理位置设置发生变化,使应用程序更难通过编程启用GPS的原因之一。

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

票数 2
EN

Stack Overflow用户

发布于 2014-08-04 06:41:51

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

例如,如果你在室内,有WiFi连接,为什么不用它来对你的位置进行三角定位呢?WiFi的精确度很高,因为从理论上讲,它覆盖的空间很小,所以手机会准确地知道它的位置,并迅速返回一个位置(如果操作得当,根据我的经验,通常不会超过10秒)。

如果找不到Wifi连接(室外)。您可以随时返回到GPS来提供坐标。另外,Gps在外面也是“最快的”。

查看以下页面:Stackoverflow discussionLocation Manager Android。如果你想变得更花哨,你甚至可以使用Geocoder安卓库来以人类可读的形式获取位置、地址等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25109291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档