Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API鼠标关闭在绘图模式下禁用?_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图API鼠标关闭在绘图模式下禁用?

Javascript 谷歌地图API鼠标关闭在绘图模式下禁用?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一张谷歌地图,上面有矩形、圆形和多边形的绘图覆盖。一切都很酷,但我想在开始绘制新的(自动)覆盖层之前清除覆盖层 似乎没有任何方法可以通过现有的谷歌地图控件清除它,我不想为它创建一些自定义按钮 google.maps.event.addListener(this.map, 'mousedown', function(event) { console.log('map mousedown'); console.log(_this.drawingManager.getDrawing

我有一张谷歌地图,上面有矩形、圆形和多边形的绘图覆盖。一切都很酷,但我想在开始绘制新的(自动)覆盖层之前清除覆盖层

似乎没有任何方法可以通过现有的谷歌地图控件清除它,我不想为它创建一些自定义按钮

google.maps.event.addListener(this.map, 'mousedown', function(event) {
    console.log('map mousedown');
    console.log(_this.drawingManager.getDrawingMode());
});
我试图在地图上发生
mousedown
事件时清除地图。但当地图处于“绘图模式”时,似乎不会触发此事件。我也找不到任何关于绘图控件的任何类型的鼠标事件的文档


即使在绘图模式下(绘制圆形、矩形、多边形等),是否也有办法触发鼠标向下事件?

据我所知,在绘图模式下没有办法触发地图上的鼠标向下事件,但我仍然认为有两种可能的方式供您选择:

A.仅当您使用绘图管理器的自定义按钮时(意味着您在初始化
DrawingManager
时设置
drawingControl:false
,并创建自己的按钮)。然后,当按下任何绘图按钮(例如用于绘制多段线的按钮)时,您可以侦听绘图完成时触发的事件,并将
设置DrawingMode
设置为null,以确保用户必须再次单击其中一个图标以开始绘图,您可以在同一个单击侦听器中删除所有现有图形。例如(说明性的,取决于您的设置):

因此,此解决方案不需要地图上的任何其他按钮,只需要选择相应绘图工具(手动、多段线、圆等)所需的按钮

B.您无法侦听映射单击事件,但仍可以侦听包含映射的div上的单击事件。在这种情况下,您还可以利用
overlycomplete
事件设置一些变量,指示绘图开始的时间。类似于在这个过程中所做的事情

$('#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
         ..
    }
    ...
});