Как использовать волшебный класс геокодера
Как мы можем преобразовать географические координаты в удобочитаемые адреса? С помощью Android Geocoder API! Давайте погрузимся.
«Развивайте страсть к обучению. Если вы это сделаете, вы никогда не перестанете расти ».
- Энтони Дж. Д’Анджело
Что такое геокодер?
Это класс для обработки геокодирования и обратного геокодирования.
- Геокодирование - это процесс преобразования адреса улицы или другого описания местоположения в координаты (широта, долгота).
- Обратное геокодирование - это процесс преобразования координаты (широты, долготы) в (частичный) адрес.
Что я собираюсь использовать
- Android
Geocoder
класс - Котлин (язык программирования)
- Просмотр привязки
- MVVM (Архитектурный шаблон)
Обзор
Самое замечательное здесь то, что я использую класс Geocoder
с Google Maps. Во многих приложениях, таких как Uber и Careem, вы могли заметить, что, когда пользователь перетаскивает / перемещается по карте с помощью булавки для выбора своего местоположения, адрес на верхней панели соответственно изменяется. Эта функция может быть реализована с помощью обратного геокодирования.
Шаг 1
Создайте проект и добавьте ключ API Карт Google, следуя документации:
Начать | SDK Карт для Android | Разработчики Google
«type: thumb-down, id: missingTheInformationINeed, label: Отсутствует нужная мне информация}, {type… developers.google.com »
Я создаю простой макет с MapView
:
Шаг 2
Geocoder
имеет два метода:
getFromLocation
: Принимает широту и долготу и дает массив адресов, известных по соответствующей широте и долготе.getFromLocationName
: принимает имя адреса в качестве входных данных (например, 1600 Amphitheatre Parkway) и предоставляет массив адресов, которые, как известно, соответствуют этому адресу.
Я использую getFromLocation
, , поскольку конвертирую широту и долготу в читаемый адрес:
Я получаю данные о местоположении, используя LoadDataCallback
в действии.
Шаг 3
Давайте посмотрим на Geocoder
в действии:
Согласно документации Google, onCameraIdle()
вызывается, «когда движение камеры закончилось, ожидающих анимаций нет, и пользователь прекратил взаимодействие с картой».
Поскольку я здесь использую MVVM, данные отображаются через viewModel
. Вот класс ViewModel
:
Теперь запустите приложение, и вы увидите волшебство!
Заключение
Надеюсь, вы узнали что-то новое. Спасибо за прочтение. Удачного кодирования!
Вы можете найти полный исходный код ниже:
Следуйте CodixLab для получения дополнительных технических знаний.