Как получить маркеры после вызова направления движения в Google Maps API? - PullRequest
4 голосов
/ 12 марта 2010

Вчера я только начал работать с Google Maps API и пытался настроить маршруты проезда к своей карте. Моя проблема: когда я вызываю функцию load,

// [...]  
gdir = new GDirections(map, directionsPanel);  
// [...]  
gdir.load("from: " + fromAddress + " to: " + toAddress);  

возвращает карту, маркеры которой нельзя перетаскивать. Итак, мне нужно сделать их перетаскиваемыми, чтобы пересчитать направления, но я не могу получить объекты маркеров.

Кто-то знает, как я могу это сделать?

1 Ответ

2 голосов
/ 14 марта 2010

Вам необходимо добавить обработчик для объекта 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 ).

...