Обратное геокодирование Mapbox не всегда возвращает результат

#android #mapbox #reverse-geocoding

#Android #mapbox #обратное геокодирование

Вопрос:

Я пытаюсь пример обратного геокодирования на mapbox

Все работает нормально. Но проблема в том, что когда я заменяю свое текущее местоположение, оно не возвращает результат. Я думаю, что в mapbox не так много данных о моем регионе (я во Вьетнаме). Есть ли возможность добавить мои собственные места, предполагающие, что у меня есть набор данных с координатами и адресом

Мой код:

 mapboxGeocoding = MapboxGeocoding.builder()
                .accessToken(getString(R.string.mapbox_access_token))
                .query(Point.fromLngLat(106.799142,10.875838))
                .geocodingTypes(GeocodingCriteria.TYPE_ADDRESS)
                .build();;

        mapboxGeocoding.enqueueCall(new Callback<GeocodingResponse>() {
            @Override
            public void onResponse(Call<GeocodingResponse> call, Response<GeocodingResponse> response) {

                List<CarmenFeature> results = response.body().features();

                if (results.size() > 0) {

                    // Log the first results Point.
                    //Point firstResultPoint = results.get(0).center();
                    String country=results.get(0).placeName();
                    Log.d("Geocoding",country);
                } else {

                    // No result for your request were found.

                    Toast.makeText(getApplicationContext(), "onResponse: No result found", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onFailure(Call<GeocodingResponse> call, Throwable throwable) {
                throwable.printStackTrace();
            }
        });
    }
    @Override
    protected void onDestroy(){
        super.onDestroy();
        mapboxGeocoding.cancelCall();
    }
  

Ответ №1:

В настоящее время нет способа добавить пользовательские POI к данным, использующим API геокодирования, но обходным путем является использование API Tilequery. Этот API извлекает объекты из векторных плиток на основе близости к определенной географической координате. Вы можете имитировать функциональность обратного геокодирования с помощью пользовательских POI с помощью следующего рабочего процесса:

  1. Создайте набор листов, содержащий ваши пользовательские POI. То есть загружайте свои данные в виде набора листов.
  2. Извлеките географические координаты точки, которую вы хотели бы использовать для обратного геокодирования.
  3. Выполните вызов API Tilequery, где radius равен 0, tileset_id — это идентификатор набора листов, созданного вами на шаге 1, а {lon}, {lat} — это долгота и широта, полученные на шаге 2. Более подробную информацию о каждом из этих параметров можно найти здесь .

Я бы рекомендовал поработать с этим руководством по созданию средства поиска здоровой пищи с помощью Tilequery API, чтобы получить больше информации о том, как API можно использовать для обратного геокодирования с пользовательскими POI. Игровая площадка Tilequery API также является отличным ресурсом для интерактивных экспериментов.

Дайте мне знать, если что-то неясно!

Комментарии:

1. спасибо за ваш ответ, я попробую сейчас. И приложение tut в некотором роде очень похоже на мое приложение