Различные результаты между Android Geocoder и веб-службой Google Geocoding

Я создаю приложение для Android, и мне нужно использовать геолокацию.

Я начал с использования API геокодирования от Android ( android.location.geocoder ), но он вызывает некоторые проблемы (время ожидания ответа от сервера ), которое кажется общим в соответствии с тем, что я прочитал.

Чтобы приложение работало при возникновении такого рода ошибок, я использую веб-службу Geocoding .

Теперь приложение работает каждый раз. Проблема заключается в том, что результаты, возвращаемые геокодером из API и геокодером из веб-службы, не совпадают.

Например, веб-служба возвращает только 3 адреса с только именем города и страной, тогда как геокодирование из API возвращает около 8 адресов с именем функции, проезжей частью, местностью …

Вопрос заключается в следующем: есть ли способ сделать результаты веб-службы точно такими же, как и те, что указаны в API?

РЕДАКТИРОВАТЬ

Вот мой класс MainGeocoder:

public class MainGeocoder { private Geocoder geocoderAPI; private GeocoderRest geocoderRest; public MainGeocoder(Context context) { geocoderAPI = new Geocoder(context); geocoderRest = new GeocoderRest(context); } public List<Address> getFromLocationName(String search, int maxResults) { List<Address> addresses; try { addresses = geocoderAPI.getFromLocationName(search, maxResults); return addresses; } catch (IOException e) { e.printStackTrace(); try { addresses = geocoderRest.getFromLocationName(search, maxResults); return addresses; } catch (IOException e1) { return null; } catch (LimitExceededException e1) { return null; } } } } 

Он в основном пытается получить список адресов из Geocoder API. Если выбрано исключение IO, он получает этот список из веб-службы, используя класс GeocoderRest, который был вставлен здесь: https://stackoverflow.com/a/15117087/3571822

Есть ли способ сделать результаты из веб-службы точно такими же, как и те, что указаны в API?

Просто нет. В большинстве попыток всегда будет разница между этими двумя геокодирами. Поскольку android.location.Geocoder использует внутреннюю службу, которую вы не можете отслеживать в исходном коде, вы никогда не увидите, где именно находится разница, но спрашиваете Google. И я не думаю, что они передадут эту информацию.

Btw, используемый вами класс GeocoderRest не анализирует даже половину информации, содержащейся в ответе. Обычно веб-сервис гораздо надежнее, чем API в SDK.

Intereting Posts
Использование $ {applicationId} в манифесте библиотеки EditText OnKeyDown Android, как очистить недавний список задач, который можно получить с кнопки «Главная» в большинстве телефонов? Отражение – это возможный путь? Как определить, когда на экране появляется фрагмент? Как использовать компоненты архитектуры ViewModel внутри адаптера RecyclerView? Поддерживает ли Android-плеер Android идентификатор сеанса в заголовках запросов HTTP? Android-клавиатура. Фон ключа Использование памяти не уменьшается, даже я перерабатываю растровые изображения Использовать намерение Android в Javascript в Chrome? Границы на определенных уровнях масштабирования на веб-странице Как ограничить приложение планшета Android? Android 4.3: Как я могу проверить, включен ли блокировка пользователя? Нет JNI_OnLoad найдено в … skipping init Фоновая служба должна отправлять местоположение GPS на сервере Android: смена фонового меню кнопки