更快地获取经度和纬度值

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() 未获取纬度和经度值

获取经度和纬度值

从函数中获取经度和纬度值

如何从 windows phone 中的纬度和经度值获取地址?

两次获取相同的纬度,经度值,比较并保存到db

ANDROID:在其他类中获取纬度和经度,但值变为0.0