更快地获得经度和纬度值

时间:2012-12-27 09:13:03

标签: android geolocation

我正在开发一个Android应用程序,我想得到Android手机的经纬度。获取纬度和经度的代码在一段时间后给出了值。有时,它根本没有给出价值。任何人都可以帮助我做些什么!

3 个答案:

答案 0 :(得分:1)

您需要添加此代码才能获取当前位置。确保你提供所有权限

Location Manager location =  locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null) 
{
 latitude = location.getLatitude();
 longitude = location.getLongitude();
}

答案 1 :(得分:0)

更快捷的方法是获取最后一个已知位置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

答案 2 :(得分:0)

如果您没有收到最新信息,请使用位置服务提供商的最后知道位置,因为

  • 当您的应用程序当时没有运行时,其他一些应用程序使用位置管理器来获取当前位置。

  • 然后,一旦您使用位置管理器启动应用程序,位置管理器基本上会花些时间准备发送当前位置,所以当时您必须从位置提供程序获取最后一个知道位置,因为您必须以这种方式设计服务。 一旦位置经理稳定,然后使用这些位置。

这是最好的方法。

谢谢 Bhavdip