所以我的问题是:我正在尝试找到一种方法来清除绘制的多边形,同时它仍然被绘制。即使我创建了一个新的google.maps.Map
对象,我仍然无法摆脱旧的多边形或折线,例如这样做:
目前,我将所有绘制的多边形/折线存储在一个数组中,并在需要时通过调用数组元素删除它们。唯一的问题是我不能删除多边形/折线,除非它在数组中。这是相关的代码:
//Code to reset map
bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(latSE, lonNW),
new google.maps.LatLng(latNW, lonSE));
var mapOptions = {
center: new google.maps.LatLng((latNW + latSE) / 2,
(lonNW + lonSE) / 2),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
map.fitBounds(bounds);
drawingManager.setMap(map);
deleteAllRegions(); //remove all regions after switching
删除区域功能:
//delete all completed polygons
function deleteAllRegions() {
for (var j = 0; j < regions.length; j++) {
regions[j].setMap(null)
}
regions = new Array();
for (var j = 0; j < paths.length; j++) {
paths[j].setMap(null)
}
paths = new Array();
}
答案 0 :(得分:2)
不那么困难,
致电drawingManager.setDrawingMode(null);
这将完成当前操作,例如当你当前绘制多边形时,多边形将完成,overlay_complete
- 事件触发(应该将形状推入数组)
无需重新创建地图或drawingManager
答案 1 :(得分:0)
刚刚发现我在清除时没有删除drawingManager
。新代码是:
//Code to reset map
bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(latSE, lonNW),
new google.maps.LatLng(latNW, lonSE));
var mapOptions = {
center: new google.maps.LatLng((latNW + latSE) / 2,
(lonNW + lonSE) / 2),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
//create new drawing manager
drawingManager = new google.maps.drawing.DrawingManager({
drawingControlOptions: {
drawingModes: [
google.maps.drawing.OverlayType.POLYLINE,
google.maps.drawing.OverlayType.POLYGON
]
},
polylineOptions:{
editable: true
},
polygonOptions:{
editable: true
}
});
//create new map
map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
map.fitBounds(bounds);
drawingManager.setMap(map);
deleteAllRegions(); //remove all regions after switching
似乎由于绘图管理器是相同的,它将保留先前绘制的多边形。