我最近在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