我正在使用Google Maps API v3,并且我已经实现了基于标记拖动结束函数渲染的方向。但是,如果再次拖动标记,则不会删除原始方向集。
地图是根据地理编码请求和源自动填充文本框生成的,目标是静态的。一切正常。我已阅读API文档,并说它使用.setMap(null);选项,但它没有清除方向,我相信这是因为我没有重新生成地图。我的方向呈现代码如下:
google.maps.event.addListener(markersrc, 'dragend', function () {
geocoder.geocode({ 'latLng': markersrc.getPosition() }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var request = {
origin: markersrc.getPosition(),
destination: markerdst.getPosition(),
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
var directionsDisplay = new google.maps.DirectionsRenderer();
var directionsService = new google.maps.DirectionsService();
directionsDisplay.suppressMarkers = true;
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directions_panel"));
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
});
});
任何人都知道如何清除原始路线?
答案 0 :(得分:1)
在我看来,每次拖动标记时,都会重新创建DirectionsDisplay和DirectionsService。相反,我认为您需要将它们创建为全局变量,这些变量仅由dragend事件侦听器更新。