我最近在Android中開始編程。在我的應用程序中,我想用文字告訴用戶他們的位置,例如:「華盛頓」或「紐約」。我已經看到我可以獲得經度和緯度,但是我想用文字說出這個位置(可探測到一個字符串)。從經緯度獲取位置名稱
我可以做到嗎?如果可以的話,怎麼樣?
它有多少準確?它可以給我的城市名稱還是隻有國家?
謝謝你的幫助!
我最近在Android中開始編程。在我的應用程序中,我想用文字告訴用戶他們的位置,例如:「華盛頓」或「紐約」。我已經看到我可以獲得經度和緯度,但是我想用文字說出這個位置(可探測到一個字符串)。從經緯度獲取位置名稱
我可以做到嗎?如果可以的話,怎麼樣?
它有多少準確?它可以給我的城市名稱還是隻有國家?
謝謝你的幫助!
只是檢查出這一點,你會得到你想要的每一件事情,
http://developer.android.com/training/basics/location/geocoding.html
下面是一個使用線程和處理程序來獲取地理編碼的答案,而不阻塞UI一個完整的示例代碼。
地理編碼調用程序,可以位於一個Helper類
public static String getAddressFromLocation(final Location location, final Context context, final Handler handler)
{
Thread thread = new Thread() {
@Override public void run()
{
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = null;
try {
List<Address> list = geocoder.getFromLocation(
location.getLatitude(), location.getLongitude(), 1);
if (list != null && list.size() > 0)
{
Address address = list.get(0);
// sending back first address line and locality
result = address.getAddressLine(0) + ", " + address.getLocality()+","+address.getCountryName();
}
}
catch (IOException e)
{
Log.e(TAG, "Impossible to connect to Geocoder", e);
}
}
};
thread.start();
return result;
}
可以使用反向geocoder實現它。對於一個示例代碼:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(latValue,
longValue, 1);
if (addresses != null) {
Address returnedAddress = addresses.get(0);
StringBuilder strReturnedAddress = new StringBuilder(
"Address:\n");
for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
strReturnedAddress
.append(returnedAddress.getAddressLine(i)).append(
"\n");
}
myAddress.setText(strReturnedAddress.toString());
} else {
myAddress.setText("No Address returned!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
myAddress.setText("Canont get Address!");
}
只要將這個代碼你得到經度和緯度值後。
僅鏈接答案問題的示例。此鏈接似乎已死亡。 – nhgrif