Google Geocoding и Autocomplete не возвращают одинаковое количество результатов - PullRequest
0 голосов
/ 22 ноября 2018

Для того же адреса, который введен пользователем при вводе адреса, google API автозаполнения в интерфейсе (с javacript) возвращает один результат и, таким образом, единый выбор для пользователя .Принимая во внимание, что Geocoder API на серверной части (PHP) возвращает два разных результата .

У меня есть серверная проверка, которая получает адрес, введенный пользователемблагодаря автозаполнению и проверяет этот адрес с геокодером.Если у меня нет результатов с геокодером или более одного результата (что является моим случаем, поскольку я получаю 2 результата с геокодером), я выбрасываю исключение.

Это проблема для меня, потому что моя проверка сгеокодер должен иметь возможность полагаться на автозаполнение.

Ниже приведено мое дополнительное объяснение

Объяснение:

У меня есть форма на моем веб-сайтегде пользователь вводит свой адрес в адресный ввод.Для этого ввода используется API автозаполнения Google с использованием JavaScript следующим образом.

var addressAutocompleteGoogleMaps = new google.maps.places.Autocomplete($myInputJqueryElement[0], {
    componentRestrictions: {country: 'fr'},
    types: ['geocode']
});

addressAutocompleteGoogleMaps.addListener('place_changed', function() {
    var addressAutocompleteSelectedAddress = $myInputJqueryElement.val();
    var autocompletionFormattedAddress = addressAutocompleteGoogleMaps.getPlace().formatted_address;
    $myInputJqueryElement.val(autocompletionFormattedAddress);

    // After having changed my form value to the formatted_address, I submit the form.
});

Теперь, если пользователь вводит следующий адрес

21bis Rue Claude Bernard, 75005 Paris, France

(как вы можете видеть, между пробелами21 и bis в адресе), хорошо на внешней стороне, Автозаполнение Google, кажется, распознает этот адрес и дает пользователю единственный уникальный выбор .Как вы можете видеть ниже:

enter image description here

, если я выполняю console.log(addressAutocompleteGoogleMaps.getPlace());, я могу увидеть один результат в моей консоли со следующими атрибутами:

place_id: "ChIJzX6RiOtx5kcRCaog3ti3QTs"
formatted_address: "21bis Rue Claude Bernard, 75005 Paris, France"
geometry: {location: _.P, viewport: _.Q}

Но в своем бэкэнде я использую службу геокодера Google и не допускаю более одного результата от API.

Если я использую тот же адрес, что и formatted_address результата автозаполнения на внешнем интерфейсе, который равен 21bis Rue Claude Bernard, 75005 Paris, France, и я отправляю его в API геокодера на моем бэкэнде с этим URL

https://maps.googleapis.com/maps/api/geocode/json?key=myKey&language=fr&region=fr&address=21bis+Rue+Claude+Bernard%2C+75005+Paris%2C+France 

(как вы можете видеть впараметры URL, между 21 и bis нет пробела, потому что отправленный моим пользователем адрес, основанный на выборе автозаполнения Google, также не содержит пробела)

Я получаю следующие результаты отгеокодер:

enter image description here

Как вы можете видеть, я получаю два результата с геокодером с адреса 21bis Rue Claude Bernard, 75005 Paris, France.

Но яс помощью автозаполнения можно получить только один результат.

Если значения place_ids не совпадают.При использовании API автозаполнения place_id составляет ChIJzX6RiOtx5kcRCaog3ti3QT.Но с помощью API геокодирования я получаю два других идентификатора place_id: ChIJVeIPVu9x5kcRPHRX59oID5M и ChIJG9djYOxx5kcR1JtnnCReAxU.

То, что мне нравится

ПочемуGoogle Geocoder не возвращает те же результаты, что и Google Autocomplete?Как мне решить мою проблему?

Я хочу:

- либо мое автозаполнение выдаст те же 2 результата, что и мой геокодер

- либо мой геокодер выдаст один результат, такой же, как автозаполнение

(пс: и, кстати, я попытался набрать тот же адрес в Интернетегеокодер Google на https://developers.google.com/maps/documentation/geocoding/intro и я также получаю один адрес, как вы можете видеть ниже. Так почему же мое внутреннее использование API геокодирования по-прежнему возвращает 2 результата ??)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...