#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:
Поскольку вы используете ввод автозаполнения, я могу предложить использовать идентификаторы мест в запросах матрицы расстояний вместо текстов.
Когда пользователь выбирает место, вы можете сохранить соответствующий идентификатор места и использовать его позже при расчете матрицы расстояний.
Например.
вернет идентификатор места ChIJu8J5RChydkgROPKSCZojxCg
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=London, UKamp;key=YOUR_API_KEY
вернет идентификатор места ChIJdd4hrwug2EcRmSrV3Vo6llI
Теперь выполните запрос матрицы расстояний для идентификаторов мест:
Ответ:
{
"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 , выходной
Вы можете легко применить этот подход к матрице расстояний.
Надеюсь, это поможет!