Android: обратное геокодирование - getFromLocation
Вот полный пример кода с android использованием потока и обработчика android-api для получения ответа геокодера android-ui без блокировки пользовательского android-mobile интерфейса.
Процедура вызова android-ui геокодера, может находиться reverse-geocoding в классе Helper
public static void 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 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();
}
} catch (IOException e) {
Log.e(TAG, "Impossible to connect to Geocoder", e);
} finally {
Message msg = Message.obtain();
msg.setTarget(handler);
if (result != null) {
msg.what = 1;
Bundle bundle = new Bundle();
bundle.putString("address", result);
msg.setData(bundle);
} else
msg.what = 0;
msg.sendToTarget();
}
}
};
thread.start();
}
Вот вызов android-application этой процедуры геокодера android-device в вашем пользовательском android-api интерфейсе:
getAddressFromLocation(mLastKownLocation, this, new GeocoderHandler());
И обработчик для android-framework отображения результатов в android-framework вашем пользовательском интерфейсе:
private class GeocoderHandler extends Handler {
@Override
public void handleMessage(Message message) {
String result;
switch (message.what) {
case 1:
Bundle bundle = message.getData();
result = bundle.getString("address");
break;
default:
result = null;
}
// replace by what you need to do
myLabel.setText(result);
}
}
Не android-mobile забудьте указать следующее android разрешение в своем Manifest.xml
android
reverse-geocoding
street-address
Android: обратное геокодирование - getFromLocation
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.