Вам необходимо добавить обработчик для объекта GDirections для события addoverlay :
GEvent.addListener(gdir, "addoverlay", onGDirectionsAddOverlay);
При вызове обработчика onGDirectionsAddOverlay вы можете перебирать новые маркеры и заменять их перетаскиваемыми копиями:
for (var i = 0; i <= gdir.getNumRoutes(); i++)
{
var originalMarker = gdir.getMarker(i);
latLngs[i] = originalMarker.getLatLng();
icons[i] = originalMarker.getIcon();
newMarkers[i] = new GMarker(latLngs[i], { icon: icons[i], draggable: true, title: 'Kan flyttes' });
map.addOverlay(newMarkers[i]);
// add stuff to your newMarkers[i] drag end event...
// ...
//Bind 'click' event to original markers 'click' event
copyClick(newMarkers[i], originalMarker);
// Now we can remove the original marker safely
map.removeOverlay(originalMarker);
}
Рабочий пример этого можно найти здесь ( source ).