Я только что углубился в мир глобальной системы позиционирования (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, поделитесь своими мыслями.
Спасибо.