Во-первых, не рекомендуется использовать координаты широты и долготы в запросе API Directions, поскольку это может повлиять на точность определения местоположения исходной и конечной точек. Поэтому я бы предложил вместо этого использовать formatted_address.
Поскольку вы хотите использовать API Places с 2 полями ввода, полями ввода начального и конечного местоположения, вам нужно будет создать два экземпляра Places API . Например:
var startAutocomplete = new google.maps.places.Autocomplete(startInput);
var endAutocomplete = new google.maps.places.Autocomplete(endInput);
Вам нужно будет получить значения из метода getPlace()
. В этом случае я сохранил значение formatted_address
в переменных startValue
и endValue
, которые позже вы передадите службе маршрутов. Значение formatted_address
как для начального, так и для конечного местоположения достаточно, чтобы служить в качестве origin
и destination
соответственно.
var startValue, endValue;
startAutocomplete.addListener("place_changed", function() {
startValue = startAutocomplete.getPlace().formatted_address;
});
endAutocomplete.addListener("place_changed", function() {
endValue = endAutocomplete.getPlace().formatted_address;
});
Для DirectionsService
вы можете использовать значения, полученные из getPlace()
метод, подобный этому:
directionsService.route({
origin: startValue,
destination: endValue,
travelMode: "DRIVING"
}
Вы можете проверить пример, который я сделал здесь, наcodeandbox.io , чтобы лучше понять, как это сделать на JavaScript. В качестве бонуса я также добавил функцию alternativeRoutes
, которая будет отображать самые быстрые и самые короткие маршруты.
ПРИМЕЧАНИЕ: для работы в этом примере вам нужно использовать свой собственный ключ API.