我正在使用以下代码将位置转换为地址(字符串)。它工作正常,但有时返回的字符串是城市级别的,例如:“以色列,特拉维夫”。
这对我来说非常糟糕,因为我需要向我的用户展示他们在哪里,而且城市级别的位置非常不详细。跟我代码有关吗?或者是一些无法处理的异常。
public String reverseGeocode(Location loc)
{
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1);
} catch (IOException e) {
e.printStackTrace();
// Update address field with the exception.
return e.toString();
}
if (addresses != null && addresses.size() > 0)
{
Address address = addresses.get(0);
// Format the first line of address (if available), city, and country name.
String addressText = String.format("%s, %s, %s",
address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
address.getLocality(),
address.getCountryName());
// Update address field on UI.
// Message.obtain(mHandler, UPDATE_ADDRESS, addressText).sendToTarget();
return addressText;
}
return "";
}