У меня есть приложение для проезда, которое дает мне поворот за поворотом. Начало, конец, и путевые родом из моей формы, которая выглядит примерно так:Как я могу сопоставить маршруты маршрутов маршрута с названиями маршрута в API Google Maps V3?
<b>Start</b>
<select id="startdrop" name="startthere">
ALL MY OPTIONS
<option selected value="COMPLETEADDRESS"><%= LOCATIONNAME %></option>
</select>
Stops Along the Way
<select multiple id="waypoints" name="waypointsselected[]">
<option selected value="COMPLETEADDRESS"><%= LOCATIONNAME %></option>
</select>
<b>End</b>
<select id="enddrop" name="endthere">
ALL MY OPTIONS
<option selected value="COMPLETEADDRESS"><%= LOCATIONNAME %></option>
</select>
Моя цель состоит в том, чтобы получить LOCATIONNAME появиться в InfoWindow для каждого пункта и в сводке маршрута. Для каждой точки от начала до конца путевых точек, резюме должно выглядеть следующим образом:
A Great House
136 Utica Ave, Brooklyn, NY 11213, USA to
Knights Baptist Church
180 Utica Ave, Brooklyn, NY 11213
Пожалуйста, смотрите ниже мою попытку. Проблемы прямо сейчас: "StartText" является одинаковым для каждого маршрута, и Waypoints разорвать JavaScript, так как массив пуст:
JAVASCRIPT
function calcRoute() {
var start = document.getElementById("startdrop").value;
var startSelect = document.getElementById("startdrop");
var startText = startSelect.options[startSelect.selectedIndex].text;
var end = document.getElementById("enddrop").value;
var endSelect = document.getElementById("enddrop");
var endText = startSelect.options[endSelect.selectedIndex].text;
var waypts = [];
var waypointText = [];
var checkboxArray = document.getElementById("waypoints");
for (var i = 0; i < checkboxArray.length; i++) {
waypts.push({
location:checkboxArray[i].value,
waypointText:checkboxArray[i].text,
stopover:true
});
}
var request = {
origin: start,
destination: end,
waypoints: waypts,
optimizeWaypoints: optimize,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
var route = response.routes[0];
var summaryPanel = document.getElementById("directions_panel");
summaryPanel.innerHTML = "";
// For each route, display summary information.
for (var i = 0; i < route.legs.length; i++) {
var routeSegment = i+1;
summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br />";
summaryPanel.innerHTML += startText + "</b><br />";
summaryPanel.innerHTML += route.legs[i].start_address + " to ";
summaryPanel.innerHTML += route.legs[i].end_address + "<br />";
summaryPanel.innerHTML += route.legs[i].distance.text + "<br />";
summaryPanel.innerHTML += route.legs[i].duration.text + "<br /><br />";
Edit 1
Здесь есть информация о воссоздании карты, которая может работать (Google Maps V3 - waypoints + infowindow with random text), но если есть другой, более эффективный подход, я бы с удовольствием это услышал!
Барнаби, спасибо за ваш ответ, но по той же документации, end_location создает LatLng объект, представляющий собой географическую точку. Я уже показываю end_address в сводной панели. Короче говоря, это само по себе не будет показывать LOCATIONNAME. – KDP
Вы можете использовать обратное геокодирование, чтобы превратить LatLng в адрес - см. Этот пример: https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse – Barnaby
Барнаби, я пытаюсь перечислить «A Великий Дом »или« Баптистская церковь рыцарей »в рамках краткого описания маршрута. Вышеупомянутый подход отобразит только адрес, который у меня уже есть в сводке маршрутов. – KDP