我正在尝试从Google地图中获取用户所选位置的地址。获取地址我正在使用GeoCoder。
geoCoder.getFromLocation(location)
即使位置发生变化,也始终返回我当前的位置地址。
注意:我在onLocationChange()
上调用此方法更新
但是对于相同的位置,当我从GoogleMaps.OnLongClickListener发送位置时,它可以正常工作。它不仅适用于LocationListener.onLocationChanged。
答案 0 :(得分:0)
使用以下方法获取地理位置的地址 -
public static String reverseGeoCoder(Context mContext,double lat,double longi){
try{
Geocoder geoCoder = new Geocoder(mContext);
List<Address> matches = geoCoder.getFromLocation(lat, longi, 1);
Address bestMatch = (matches.isEmpty() ? null : matches.get(0));
String address = bestMatch.getAddressLine(0)+" "+bestMatch.getAddressLine(1);
return address;
}
catch(Exception e){
e.printStackTrace();
}
return "";
}
答案 1 :(得分:0)
尝试以下代码。问题可能在于您如何使用LocationListener。
LocationManger lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
StringBuilder result = new StringBuilder();
try {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
result.append(address.getLocality()).append("\n");
result.append(address.getCountryName());
}
}catch (IOException e) {
Log.e("tag", e.getMessage());
}
}
}