2013-08-30 7 views
1

У меня есть приложение для проезда, которое дает мне поворот за поворотом. Начало, конец, и путевые родом из моей формы, которая выглядит примерно так:Как я могу сопоставить маршруты маршрутов маршрута с названиями маршрута в 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), но если есть другой, более эффективный подход, я бы с удовольствием это услышал!

ответ

0

Объект DirectionsStep имеет свойство end_location. Вы можете получить это значение и отобразить его в информационном окне?

https://developers.google.com/maps/documentation/javascript/reference#DirectionsLeg

+0

Барнаби, спасибо за ваш ответ, но по той же документации, end_location создает LatLng объект, представляющий собой географическую точку. Я уже показываю end_address в сводной панели. Короче говоря, это само по себе не будет показывать LOCATIONNAME. – KDP

+0

Вы можете использовать обратное геокодирование, чтобы превратить LatLng в адрес - см. Этот пример: https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse – Barnaby

+0

Барнаби, я пытаюсь перечислить «A Великий Дом »или« Баптистская церковь рыцарей »в рамках краткого описания маршрута. Вышеупомянутый подход отобразит только адрес, который у меня уже есть в сводке маршрутов. – KDP