我有一个谷地图,其中包含矩形,圆形,多边形的绘图叠加层。一切都很酷,但我想在开始绘制一个新的(自动)之前清除叠加层。
似乎无法通过现有的Google地图控件清除它,我也不想为它创建一些自定义按钮。
google.maps.event.addListener(this.map, 'mousedown', function(event) {
console.log('map mousedown');
console.log(_this.drawingManager.getDrawingMode());
});
我想在地图上发生mousedown
事件时清除地图。但是当地图处于"绘图模式时#34;这个事件并没有发生。我也找不到任何关于绘图控件的鼠标事件的文档。
即使在绘图模式下(绘制圆形,矩形,多边形等),还有办法触发mousedown吗?
答案 0 :(得分:2)
在我知道的绘画模式中,没有办法在地图上发射mousedown事件,但我认为有两种可能的方法可供选择:
一个。仅当您使用自定义按钮进行绘图管理时(意味着在初始化drawingControl: false
时设置DrawingManager
并创建自己的按钮)。然后,当按下任何绘图按钮时,例如,用于绘制折线的按钮,您可以监听绘图完成时触发的事件,并将setDrawingMode
设置为null,以确保用户必须再次单击其中一个图标才能开始绘图,您可以在相同的单击侦听器删除所有现有的绘图。例如(插图,取决于您的设置):
$('#polylineButton').on('click', function(){
//delete any previous existing drawings on map
drawing_manager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON);
google.maps.event.addListenerOnce(drawing_manager, 'overlaycomplete',function(polyline) {
drawing_manager.setDrawingMode(null); //set to hand cursor after overlay was drawn
..
}
...
});
因此,此解决方案不需要地图上的任何其他按钮,只需要选择相应的绘图工具(手,折线,圆等)。
B中。您无法侦听地图点击事件,但您仍然可以在包含地图的div上侦听点击事件。在这种情况下,您还可以利用overlaycomplete
事件设置一些指示绘图何时开始的变量。类似于answer中所做的事情。