Обратное геокодирование Android требует либо подключения к Интернету, либо внутреннего поставщика данных.

Я только что углубился в мир глобальной системы позиционирования (GPS) и обнаружил следующие интересные факты:

1) Класс Android android.location.Geocoder всегда возвращает null при получении адреса с помощью обратного геокодирования. Код, который я использовал:

Geocoder mGeocoder = new Geocoder(context, locale);
List<Address> addresses = mGeocoder.getFromLocation(latitude, longitude, 1);
if (!addresses.isEmpty()) {
    // do something.
} else {
    // Display a message regarding no address available.
}

Причина указана здесь:

Для класса Geocoder требуется серверная служба, которая не включена в базовую платформу Android.

Таким образом, по сути, мне придется либо самому предоставлять данные офлайн-геолокации для обратного геокодирования, либо моему Android-приложению придется подключаться к Интернету и искать данные геолокации в Google (например, через http://maps.googleapis.com/maps/api/geocode/json?latlng=). Или используйте альтернативные поставщики геолокации, такие как OpenStreetMap и т. д.

2) Приложения для Android, такие как Google Maps, требуют подключения к Интернету; в то время как автономный поставщик, такой как TomTom, объединил данные автономной геолокации вместе со своим приложением, поэтому подключение к Интернету не требуется.

Помимо указанных выше фактов, существует ли другая альтернатива для получения адреса геолокации без использования офлайн-обратных географических данных или подключения к Интернету?

Если у вас есть опыт работы с геокодированием и обратным геокодированием в Android, поделитесь своими мыслями.

Спасибо.


person Community    schedule 11.06.2015    source источник
comment
Помимо методов, которые вы указали в своем посте, я не знаю никаких других методов обратного геокодирования.   -  person    schedule 11.06.2015
comment
Для геокодирования на основе OSM вы можете попробовать Telenav SDK, поскольку они поставляются с автономным геокодированием и обратным геокодированием: developer.skobbler.com/getting-started/android#sec019   -  person Ando    schedule 12.06.2015


Ответы (2)


Для каждого есть как минимум один способ.

Для обратного геокодирования вы позволяете пользователю самостоятельно отмечать геолокацию адреса с помощью GPS.

Для геокодирования вы позволяете пользователю найти набор координат, а затем вы предлагаете ему прочитать название улицы и адрес, по которому он оказался.

person Stephan Branczyk    schedule 11.06.2015
comment
Спасибо за публикацию вашего ответа, но мое требование отличается от того, что вы предложили. ;) - person ; 11.06.2015

Существует несколько автономных библиотек, доступных для реверсирования геокодирования в автономном режиме. Предлагаем вам пройти через эти библиотеки. Лично я не использовал эти библиотеки. Дайте мне знать, если у вас все еще возникнут проблемы.

https://developers.arcgis.com/android/

Пример кода для ссылки:

https://github.com/Esri/arcgis-runtime-samples-android/tree/master/OfflineRoutingAndGeocoding

person Meher    schedule 12.06.2015