我正在android中开发一个应用程序,我想获得android手机的纬度和经度。我获取纬度和经度的代码是在一段时间后给出值。有时,它根本没有给出值。谁能帮我做点什么!
问问题
1324 次
3 回答
1
您需要添加此代码以获取当前位置。确保您授予所有权限
Location Manager location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null)
{
latitude = location.getLatitude();
longitude = location.getLongitude();
}
于 2012-12-27T09:49:03.410 回答
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
提供商之间的最新版本。
于 2012-12-27T09:22:43.757 回答
0
如果您没有获得最新信息,请使用您的位置服务提供商提供的最新位置,因为
当您的应用程序当时没有运行时,其他一些应用程序使用位置管理器来获取当前位置。
那么一旦你使用位置管理器启动你的应用程序,位置管理器基本上需要一些时间来准备发送当前位置,所以那时你必须从位置提供者那里获得最后知道的位置,因为你必须以这种方式设计服务。一旦位置管理器稳定,然后使用这些位置。
这是最好的方法。
谢谢巴夫迪普
于 2012-12-27T09:56:53.383 回答