Location を address(String) に変換するために、次のコードを使用しています。正常に動作していますが、返される文字列が「イスラエル、テルアビブ」などの都市レベルである場合があります。
ユーザーがどこにいるかを示す必要があり、都市レベルの場所は非常に詳細でないため、これは私にとってかなり悪いことです。それは私のコードで何かですか?または処理できないいくつかの例外です。
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 "";
}