4

我昨天刚开始使用 Google Maps API,并尝试为我的地图设置行车路线。我的问题是:当我调用函数加载时,

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

它返回一个标记不可拖动的地图。因此,我需要使它们可拖动以重新计算方向,但我无法获取标记对象。

有人知道我该怎么做吗?

4

1 回答 1

2

您需要在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);
}

您可以在此处找到一个工作示例(来源)。

于 2010-03-14T12:24:14.553 回答