In my code in generate a route in segments and want to place a Marker near 
the centre of the leg and calculate total distance and time.

The problem comes if the user selects one of the alternate routes.
There appears to be no event documented that I can listen to detect the 
change in route to allow repositioning of the marker and update 
calculations.

I can use directions_changed to detect a dragged change of route but a 
change of route index through the user interface does not drive this event.

The route index is not even set prior to a call directions_changed a call to 
getRouteIndex returns undefined  
(Chris Broadfoot noted this in June but unfortunately didn't post a 
solution)

Has anyone found out how to detect if an alternative route has been 
selected?

A website showing the problem is 
http://calonmap.clanteam.com/CalOnMapPublic.html?&feedURL=https://www.google.com/calendar/feeds/calonmap%40gmail.com/public/full
Click on the car icons on map or sidebar and select an alternate route
the relevant code segment is: 

      // create Marker
      var marker = new google.maps.Marker({
                                          map: map,
                                          position: spot,
                                          value: l,
                                          icon: travIcon,
                                          title: title,
                                          ZIndex: 1,
                                          draggable: false
                                          });
      dirObj.Mark = marker;

      var text = '<div>Directions leg '+l+'</div>'
      // create info boxes for the marker
      dirObj.infowindow = new google.maps.InfoWindow({
                                                  content: text
                                                  });

      // add action events so the info window will be shown when the marker 
is clicked
      google.maps.event.addListener(marker, 'click', function (){
                                    var text = '<div 
id="directbox'+l+'"><b>'+dirObjArr[l].Title+'</b><div 
id="directboxdir'+l+'"></div></div>'
                                    //print(text)
                                    
document.getElementById("event_list").innerHTML = text;
                                    //document.write(text)
                                    
dirObjArr[l].Rend.setPanel(document.getElementById('directboxdir'+l));
                                    
dirObjArr[l].infowindow.setContent(document.getElementById('directbox'+l));
                                    dirObjArr[l].infowindow.open(map, 
marker);
                                    //print('directbox'+l)
                                   });
   }

   // find and show route between the points
   var request =
   {
      origin:locn[stIx],
      destination:locn[endIx],
      avoidHighways: avoidHighways,
      avoidTolls: avoidTolls,
      optimizeWaypoints: optWaypts,
      provideRouteAlternatives: provideRouteAlternatives,
      travelMode: travel,
      unitSystem: unitSys
   };
   dirObj.Rend.setMap(map);
   dirObj.Vis=false;
   dirObj.Title = title;
   dirObj.stIx = stIx;
   dirObj.endIx = endIx;
   dirObjArr[l]=dirObj;

   dirObj.Serv.route(request,
                           function(response, status){
                           if (status == google.maps.DirectionsStatus.OK){
                              print('directs done '+l)
                              dirObjArr[l].Rend.setDirections(response);
                              var r = dirObjArr[l].Rend.getRouteIndex();
                              var midpoint = 
Math.floor(response.routes[r].legs[0].steps.length/2)
                              
dirObjArr[l].Mark.setPosition(response.routes[r].legs[0].steps[midpoint].start_location);
                              }
                           else{procNoRoute(status);}
                          });

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps JavaScript API v3" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-maps-js-api-v3/-/KZg3qY_D7YEJ.
To post to this group, send email to google-maps-js-api-v3@googlegroups.com.
To unsubscribe from this group, send email to 
google-maps-js-api-v3+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-maps-js-api-v3?hl=en.

Reply via email to