更快地获取经度和纬度值
Posted
技术标签:
【中文标题】更快地获取经度和纬度值【英文标题】:Getting longitude and latitude values faster 【发布时间】:2012-12-27 09:13:02 【问题描述】:我正在 android 中开发一个应用程序,我想获取 android 手机的纬度和经度。我获取纬度和经度的代码是在一段时间后给出值。有时,它根本没有给出值。谁能帮我做点什么!
【问题讨论】:
分享您的相关代码并向我们展示您的尝试:) 如果您使用 GPS 获取纬度和经度,可能需要一些时间。您的其他参数是什么,准确性如何?如果不是很在意精度,可以使用其他方法获取经纬度。 这是我现在使用的代码 LocationManager locManager; locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0 ,0 , locationListener);位置 location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location != null) String lat = String.valueOf(location.getLatitude()); v1.setText(lat);字符串 longi = String.valueOf(location.getLatitude()); v2.setText(longi); 是的,我不需要准确性。我只是希望它快点到来。这样做的另一种方法是什么 【参考方案1】:您需要添加此代码以获取当前位置。确保您授予所有权限
Location Manager location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null)
latitude = location.getLatitude();
longitude = location.getLongitude();
【讨论】:
【参考方案2】:如果您没有获得最新的位置,请使用您的位置服务提供商提供的最新位置,因为
当您的应用程序当时没有运行时,其他一些应用程序使用位置管理器获取当前位置。
那么一旦你使用位置管理器启动你的应用程序,位置管理器基本上需要一些时间来准备发送当前位置,所以那时你必须从位置提供者那里获得最后知道的位置,因为你必须以这种方式设计服务。 一旦位置管理器稳定,然后使用这些位置。
这是最好的方法。
谢谢 巴夫迪普
【讨论】:
【参考方案3】:一种更快的方法是获取最后一个已知位置getLastKnownLocation()
并检查此位置的时间是否不远location.getTime()
。或者使用它直到你得到真实的位置。
另一个提示是同时使用 GPS_PROVIDER 和 NETWORK_PROVIDER,这样您的代码将如下所示:
LocationManager locManager;
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
/*call both providers , the quickest one will call the listener and in the listener you remove the locationUpdates*/
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0 ,0 , locationListener);
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0 ,0 , locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
/*check both providers even for lastKnownLocation*/
if (location == null)
location = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null)
String lat = String.valueOf(location.getLatitude());
v1.setText(lat);
String longi = String.valueOf(location.getLatitude());
v2.setText(longi);
这是一个简单的示例,更详细的解决方案将比较提供商之间的最新lastKnownLocation
。
【讨论】:
前半段应该是评论了。以上是关于更快地获取经度和纬度值的主要内容,如果未能解决你的问题,请参考以下文章
navigator.geolocation.getcurrentPosition() 未获取纬度和经度值