Правильная структура запроса для GeocodeRequest в HERE Maps Android SDK?

Начиная с версии 3.0 HERE Maps Android SDK, GeocodeRequest использует запрос произвольного текста для выполнения процесса запроса геокодирования, однако неясно, какая структура является правильной для передачи запроса. "провинциальный город" или "страна, город" или "город-город"... и т.д.

В моей реализации пользователь выбирает страну/город, и на основе этого я хочу центрировать карту в этой стране/городе, выполнив запрос геокодирования, чтобы получить GeoCoordinate из этого местоположения, поэтому вопрос заключается в том, как мне сформировать запрос, чтобы запрос геокодирования возвращает местоположения в своем методе onComplete, а также каково точное значение радиуса?

Моя текущая реализация, как показано ниже

 String geoCodeQuery = String.format("%s %s",
                        selectedDestinationCity == null ? "" : selectedDestinationCity.getCity(),
                        selectedDestinationCountry == null ? "" : selectedDestinationCountry.getCountry());
 GeocodeRequest geocodeRequest = new GeocodeRequest(geoCodeQuery);

 geocodeRequest.setSearchArea(new GeoCoordinate(
                        selectedDestinationCountry.getCapitalCityCoordinate().getLatitude(),
                        selectedDestinationCountry.getCapitalCityCoordinate().getLongitude()), 5000);
                geocodeRequest.execute(new ResultListener<List<Location>>() {
                    @Override
                    public void onCompleted(List<Location> locations, ErrorCode errorCode) {
                        loadingDialog.dismiss();

                        if (errorCode == ErrorCode.NONE) {
                            if (locations.size() > 0) {
                                GeoCoordinate location = locations.get(0).getCoordinate();
                                addressModelBuilder.setLatitude(location.getLatitude());
                                addressModelBuilder.setLongitude(location.getLongitude());
                            }

                        }
                    }
                });

Цените вашу любезную помощь.


person Aram Tchekrekjian    schedule 29.09.2016    source источник


Ответы (1)


Достаточно адреса в стандартном формате (например, город, штат, страна). Если геокодер не возвращает ожидаемых результатов, возможно, вы столкнулись с известной ошибкой геокодера... попробуйте использовать небольшой радиус (например, 1 м) для setSearchArea().

Однако, если GeoCodeRequest не дает никаких результатов, тогда можно использовать альтернативные запросы TextAutoSuggestionRequest или SearchRequest.

TextAutoSuggestionRequest в онлайн-запросе.

SearchRequest работает как для онлайн-, так и для офлайн-запросов.

Эти запросы, вероятно, используются для запросов onebox на странице https://wego.here.com.

person Norbert Martin    schedule 03.10.2016
comment
Спасибо за исчерпывающий ответ. Кажется, в геокодере есть ошибка, потому что я попробовал несколько вариантов города, страны в запросе, но это не дало ожидаемых результатов. Однако я попробовал SearchRequest с запросом страны города, и это сработало как шарм. Так что спасибо :) - person Aram Tchekrekjian; 04.10.2016