Обратный запрос геокодирования с библиотекой Algolia places.js

Я использую библиотеку places.js для автозаполнения, но также хочу использовать ее для обратного геокодирования. Согласно https://community.algolia.com/places/examples.html#reverse-geocoding это должно быть возможно - автозаполнение работает нормально, но не обратный вызов. Выдержка из кода:

            places.configure({
                hitsPerPage: 1,
                aroundLatLng: position.coords.latitude + ',' + position.coords.longitude,
            });
            places.reverse({
                //aroundLatLng: position.coords.latitude + ',' + position.coords.longitude,
                //hitsPerPage: 1
            }).then(function(response){
                var hits = response.hits;
                var suggestion = hits[0];
                if (suggestion && (suggestion.locale_names || suggestion.city)) {
                    address_input.value = suggestion.locale_names.default[0] || suggestion.city.default[0];
                }
            });

Это инициирует вызов правильной конечной точки, но ошибки aroundLatLng отсутствуют. Я подтвердил, что данные есть, а также hitsPerPage остается по умолчанию 5. Как вы можете видеть из закомментированных строк, я пытался передать параметры непосредственно вызову reverse и использовать configure.

Может ли кто-нибудь помочь сказать мне, как правильно использовать библиотеку places.js для обратного вызова, пожалуйста?

Спасибо.


person phil    schedule 13.05.2019    source источник
comment
Вы уверены, что в position.coords.{latitude|longitude} есть актуальные данные?   -  person Olivier Lance    schedule 14.05.2019
comment
Да 100%. Что-то в корне неправильное в том, что я делаю, поскольку даже значение hitsPerPage передается неправильно, когда я смотрю URL-адрес, называемый   -  person phil    schedule 14.05.2019


Ответы (1)


Итак, что не так, так это то, что Algolia предоставляет два способа вызова обратного геокодирования, но на самом деле документирует только один.

В примере обратного геокодирования Algolia используется реализация Places из библиотеки клиента Algolia, которая позволяет:

const places = algoliasearch.initPlaces('appId', 'apiKey');
places.reverse({ aroundLatLng: 'lat,lng', hitsPerPage: 5 }).then(callback);

В библиотеке places.js есть еще один метод reverse, и он принимает немного другие аргументы:

const placesAutocomplete = places({ appId: '', apiKey: '', container: inputEl });
places.reverse('lat,lng', { hitsPerPage: 5 });

Обратите внимание, что пара широта/долгота должна быть задана в качестве первого аргумента, а затем параметры запроса в качестве второго аргумента объекта.

person Olivier Lance    schedule 16.05.2019
comment
Блестяще - спасибо, Оливер! Для всех, кто находит это - ответ также в другом формате - просто массив результатов, а не доступ к объекту хитов. Так, например. var suggestion = response[0]; address_input.value = suggestion.country; и т. д. - person phil; 19.05.2019