Карта Google: проблема с автоматически предлагаемым адресом

#google-maps #google-maps-api-3

#google-карты #google-maps-api-3

Вопрос:

Я использую «API матрицы направлений Google» для создания маршрута направления между двумя адресными точками, включая путевые точки. Чтобы получить ввод адреса от пользователя, я использую автозаполнение Google Place.

  var options = {
            componentRestrictions: {country: 'UK'}
};
var fromText = document.getElementById('start');
var fromAuto = new google.maps.places.Autocomplete(fromText,options);
  

Проблема: это происходит только с некоторыми адресами

Когда пользователь начинает вводить как терминал и выбирает адрес из предложенного Google адреса «Терминал 2, Хаунслоу, Великобритания»

Предположим, что это исходный адрес, а другой адрес — «Лондон, Великобритания». После заполнения этих адресов и когда я нажимаю на кнопку «Создать карту». Всплывающее окно с ошибкой «Запрос направления не удался из-за NOT_FOUND».

Но если я изменю адрес «Терминал 2, Хаунслоу, Великобритания» на «Терминал два, Хаунслоу, Великобритания» вручную (изменив числовое значение «2» на алфавит «два»). Все работает нормально.

Я не знаю, почему это происходит? в то время как «Терминал 2, Хаунслоу, Великобритания» автоматически предлагается Google.

Любая помощь будет оценена

Ответ №1:

Поскольку вы используете ввод автозаполнения, я могу предложить использовать идентификаторы мест в запросах матрицы расстояний вместо текстов.

Когда пользователь выбирает место, вы можете сохранить соответствующий идентификатор места и использовать его позже при расчете матрицы расстояний.

Например.

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Terminal 2, Hounslow, United Kingdomamp;components=country:GBamp;key=YOUR_API_KEY

вернет идентификатор места ChIJu8J5RChydkgROPKSCZojxCg

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=London, UKamp;key=YOUR_API_KEY

вернет идентификатор места ChIJdd4hrwug2EcRmSrV3Vo6llI

Теперь выполните запрос матрицы расстояний для идентификаторов мест:

https://maps.googleapis.com/maps/api/distancematrix/json?origins=place_id:ChIJu8J5RChydkgROPKSCZojxCgamp;destinations=place_id:ChIJdd4hrwug2EcRmSrV3Vo6llIamp;key=YOUR_API_KEY

Ответ:

 {
    "destination_addresses":[
       "London, UK"
     ],
     "origin_addresses":[
         "London Heathrow Terminal 2, Compass Centre, Nelson Road, Longford, Hounslow TW6 2GW, UK"
     ],
     "rows":[
         {
             "elements":[
                 {
                     "distance":{
                         "text":"28.7 km",
                         "value":28661
                     },
                     "duration":{
                         "text":"49 mins",
                         "value":2940
                     },
                     "status":"OK"
                  }
              ]
          }
       ],
       "status":"OK"
  } 
  

Вы можете сделать то же самое в Maps JavaScript API. Пожалуйста, взгляните на этот пример, который вычисляет маршруты с использованием сервиса маршрутов с идентификаторами мест:

http://jsbin.com/xuyisem/1/edit?html , выходной

Вы можете легко применить этот подход к матрице расстояний.

Надеюсь, это поможет!