#android #geolocation
#Android #геолокация
Вопрос:
В моей программе для Android есть следующий код
List<Address> addressList = geoCoder.getFromLocation(37.790551,-122.433931, 1);
if (!addressList.isEmpty()) {
address = addressList.get(0);
String number = address.getSubThoroughfare();
String streetName = address.getThoroughfare();
.....
}
По сути, это запрос на получение названия улицы (отсюда 1
) по широте и долготе в Сан-Франциско.
Когда я запускаю эту программу на телефоне в Европе (в частности, в Ирландии), number
возвращается как 2250-2290
и streetname
возвращается как Fillmore St
.
Когда я прошу друга запустить тот же код на своем телефоне в Калифорнии, number
есть null
и streetname
до сих Fillmore st
пор есть.
Я видел, что другие вопросы SO ссылаются на настройки региона, но возможно ли, что географическое местоположение может повлиять на запрос в Android API?
В API геокодирования Javascript упоминается смещение региона. Интересно, возможно ли сделать что-то подобное в Android API. Я пытался создать геокодер как
Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.US);
но это не воссоздает результат, основанный на Калифорнии.
Ответ №1:
Из-за того, что люди запускают идентичный код на разных континентах, кажется, что местоположение действительно является фактором. Геокодирование Javascript позволяет вам указать region
хотя
Ответ №2:
На телефонах установлены разные версии Android? Кроме того, следует иметь в виду еще одну вещь: «Для класса Geocoder требуется серверная служба, которая не включена в основную платформу Android». Итак, если два телефона обращаются к разным внутренним службам для запроса геокодера, это может объяснить вывод, который вы видите.
Я думаю, что с Android 1.5 они включили реализацию серверной службы Google API для Geocoder. Я не знаю, вносили ли новые версии Android и Google API изменения в реализацию геокодера, которые могут давать вам другие результаты, или это происходит из какой-то другой серверной службы.
Комментарии:
1. Оба работают под управлением froyo. Как вы можете указать серверную часть?