在绘图模式下,Google Maps API mousedown是否已禁用?

时间:2016-04-26 08:34:34

标签: javascript google-maps google-maps-api-3

我有一个谷地图,其中包含矩形,圆形,多边形的绘图叠加层。一切都很酷,但我想在开始绘制一个新的(自动)之前清除叠加层。

似乎无法通过现有的Google地图控件清除它,我也不想为它创建一些自定义按钮。

google.maps.event.addListener(this.map, 'mousedown', function(event) {
    console.log('map mousedown');
    console.log(_this.drawingManager.getDrawingMode());
});

我想在地图上发生mousedown事件时清除地图。但是当地图处于"绘图模式时#34;这个事件并没有发生。我也找不到任何关于绘图控件的鼠标事件的文档。

即使在绘图模式下(绘制圆形,矩形,多边形等),还有办法触发mousedown吗?

1 个答案:

答案 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中所做的事情。