我昨天刚开始使用Google Maps API,并尝试设置前往我的地图的行车路线。我的问题是:当我调用函数load时,
// [...]
gdir = new GDirections(map, directionsPanel);
// [...]
gdir.load("from: " + fromAddress + " to: " + toAddress);
它会返回其标记不可拖动的地图。因此,我需要使它们可拖动以便重新计算方向,但是我无法获得markers对象。
有人知道我该怎么做吗?
最佳答案
您需要在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);
}
您可以找到此here(source)的工作示例。