In the Google Maps API v3, how can I get the waypoint markers from the DirectionsRenderer in order to add click events to them (such as a delete menu).
- 
                    I'm having the exact same problem right now. Have you found a solution? – lashleigh Jul 31 '11 at 03:49
- 
                    I don't think there is a solution with the current state of the Google Maps API. Someone should submit a feature request. I've thought about a potential workaround, but haven't had the time to pursue it. – theazureshadow Aug 01 '11 at 00:56
- 
                    @lashleigh: This enhancement would allow code to easily be written to solve the problem. Go ahead and star it, if you like: http://code.google.com/p/gmaps-api-issues/issues/detail?id=2141 – theazureshadow Aug 01 '11 at 04:04
- 
                    Thanks, I'll add my name to the list. – lashleigh Aug 01 '11 at 04:54
3 Answers
Until a better solution can be found here is the work around that I have employed. The basic idea is to put your own marker on top of the waypoints and bind a click event listener to your marker. I have made a jsfiddle demonstrating the idea.
It definitely isn't perfect, but with a custom icon instead of the default marker it could look sort of natural.
 
    
    - 2,555
- 2
- 20
- 28
Another way, which doesn't involve putting new markers on the map, would be to detect DOM click events on the map widget. The idea is simple. When a click is detected:
- convert all waypoints' LatLng coordinates to coordinates on the screen (or, in fact, on the map widget) using MapCanvasProjection
- calculate distances between waypoints and the point clicked. If user clicked close enough to any of the waypoints (the distance is lower than the radius of a waypoint icon) - display a menu for that point
I coded a complete solution in java for gwt. It should be pretty straightforward to get it translated into javascript.
Instead of creating a click event on a waypoint, you can create it on a marker, and assign it a high z-index so it overlays the waypoint.
- Create the single markers and assign the a high z-index
    marker = new google.maps.Marker({
      map:map,
      position: new google.maps.LatLng(1.99, 2.99),
    });
    marker.setZIndex(999);
- Add a listener to the markers
google.maps.event.addListener(marker, 'click', function(event){
      alert(marker.title);
    }); 
- And now create the waypoints.
 
     
     
     
    