我需要获取当前GPS位置的最近位置的地点或地址以显示在谷歌地图上。目前我能够在地图上显示一些位置,但是这是硬编码,我需要在绘制地图之前取所有最近的位置。Android根据GPS位置获取最近的地图或谷歌地图上的地址
有什么建议吗?
我需要获取当前GPS位置的最近位置的地点或地址以显示在谷歌地图上。目前我能够在地图上显示一些位置,但是这是硬编码,我需要在绘制地图之前取所有最近的位置。Android根据GPS位置获取最近的地图或谷歌地图上的地址
有什么建议吗?
下面是方式,你如何实现它。
LocationManager locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
Double l1 = location.getLatitude();
Double l2 = location.getLongitude();
address = GetAddress(l1, l2);
}
};
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
private String GetAddress(Double lat, Double lon) {
Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);
String ret = "";
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(lat, lon, 1);
if (!addresses.equals(null)) {
Address returnedAddress = addresses.get(0);
StringBuilder strReturnedAddress = new StringBuilder("\n");
for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
strReturnedAddress
.append(returnedAddress.getAddressLine(i)).append(
"\n");
}
ret = "Around: " + strReturnedAddress.toString();
} else {
ret = "No Address returned!";
}
} catch (IOException e) {
e.printStackTrace();
ret = "Location: https://maps.google.co.in/maps?hl=en&q=" + lat
+ "," + lon;
} catch (NullPointerException e) {
e.printStackTrace();
ret = lat + "," + lon;
}
return ret;
}
而且还AndroidManifest添加这些权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
感谢Harpreet,从上面的代码中我们可以找到当前纬度的地址,但是我的任务是到任何位置的最近的位置,就像我现在得到了一个位置,那么最近的位置就像b,c,d一样。 – 2013-05-03 06:53:54
@ricintech:你可以看到代码片段:Address returnedAddress = addresses.get(0);'。我只是采取谷歌提供的第一个地址,你可以先检查列表的长度,并可以显示所有可用的地址,如果你想获取用户提供的任何位置的地址,那么对于这个代码,你首先需要摆脱它的纬度&lon并将其放入此代码中。 – Harpreet 2013-05-03 07:33:00
这段代码在主线程上做了网络调用的不好的事情。 – 2013-05-03 09:17:41
首先获得您的当前位置Lattitude & Longitude
,然后让你的每个位置的Lattitude &经度和使用位置类的distanceTo方法您当前的位置找出每个地方的距离,之后找到你的清单了最小距离。
感谢Nirav的快速回复,但我没有预定义的位置,我需要取得最近的位置,我有一个位置的基础上。 – 2013-05-03 06:11:21
在哪里存储这些位置? – 2013-05-03 09:17:58