Как рассчитать уровень масштабирования для результатов Android Geocoder - PullRequest
3 голосов
/ 16 апреля 2011

Я использую геокодер Android, чтобы разрешить поиск местоположения в приложении, основанном на карте. Геокодирование работает хорошо, и приложение успешно повторно отображает MapView на результатах геокодирования. Проблема в том, что я не знаю, какой уровень масштабирования использовать при переходе на новое место. Параметр location_query может быть улицей или страной - как узнать, как далеко увеличить изображение, чтобы отобразить полученное местоположение? То есть чем заменить ??? на?

public void goToPlace(String location_query) {

    List<Address> addresses;
    Geocoder gc = new Geocoder(_ctx);

    addresses = gc.getFromLocationName(location_query, 1);
    if (addresses != null) {
        Address a = addresses.get(0);
        int lat = (int) (a.getLatitude() * 1E6);
        int lon = (int) (a.getLongitude() * 1E6);
        mapController.animateTo(new GeoPoint(lat, lon));
        mapController.setZoom(???);
    }
}

Ответы [ 3 ]

3 голосов
/ 10 октября 2011

Моя идея - использовать метод getAddressLine для выбора подходящего уровня масштабирования.Как сказано в документации:

Возвращает строку адреса, пронумерованную данным индексом (начиная с 0), или ноль, если такой строки нет.

Так что длястрана возвращает только 1 строчный адрес, для города 2 строки, для улицы 3 строки.Для каждого случая вы можете использовать разные уровни масштабирования.

2 голосов
/ 08 ноября 2011

API геокодирования Android предоставляют только широту и долготу.С другой стороны, API веб-геокодирования предоставляют широту, долготу и область просмотра, необходимые для масштабирования карты.Вывод заключается в том, что до тех пор, пока Google не решит расширить свои API-интерфейсы Android, вам нужно использовать веб-API-интерфейсы для получения недостающих данных о масштабировании области просмотра.

К счастью, использование веб-API-интерфейсов не слишком сложно благодаря библиотеке GeocoderPlus, котораявыполняет все запросы веб-API и анализ JSON и возвращает в качестве результатов только объекты Java.Он имеет интерфейс, аналогичный встроенному геокодеру, и доступен в формате JAR для включения в ваше приложение для Android.

Ознакомьтесь с приведенным ниже сообщением в блоге для использования: http://bricolsoftconsulting.com/perfect-geocoding-zoom-part-2/

0 голосов
/ 26 апреля 2011

Вы можете сделать setZoom (18) или что-то в этом роде, поскольку у вас есть только одна точка для показа.

Если у вас есть несколько точек, то вам нужно zoomToSpan . Что вам нужно сделать, так это найти, что пары min и max lat / lng передают разницу между этими значениями в вышеуказанную функцию, чтобы получить оптимальный уровень масштабирования.

...