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

2022-09-11T20:14:11+00:00