我正在使用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定位更快?
或者是一种不用用户做任何事情就能激活“谷歌位置服务”的方法?
发布于 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上开发的这个小的地理定位测试应用。它需要一些工作,但应该可以帮助您在粗略和精细设置之间进行一些实验。
发布于 2014-08-04 06:41:51
我认为你可以让你的应用程序多样化一点。
例如,如果你在室内,有WiFi连接,为什么不用它来对你的位置进行三角定位呢?WiFi的精确度很高,因为从理论上讲,它覆盖的空间很小,所以手机会准确地知道它的位置,并迅速返回一个位置(如果操作得当,根据我的经验,通常不会超过10秒)。
如果找不到Wifi连接(室外)。您可以随时返回到GPS来提供坐标。另外,Gps在外面也是“最快的”。
查看以下页面:Stackoverflow discussion。Location Manager Android。如果你想变得更花哨,你甚至可以使用Geocoder安卓库来以人类可读的形式获取位置、地址等。
https://stackoverflow.com/questions/25109291
复制相似问题