添加绘图管理器后丢失绑定事件



我遇到了一个问题,当我添加DrawingManager功能到谷歌地图。当我在下面调用drawingManager.setMap(map)时,我失去了在createMap函数底部添加的点击事件。当我注释掉drawingManager.setMap(map)时,我的单击事件工作正常。我在文档中找不到任何可以解释这种行为的提及,但我一定是错过了一个步骤或做错了什么。

下面是我使用的代码的基本版本:

function createMap() {
  window.center = new google.maps.LatLng(latitude, longitude);
  var mapOptions = {
    zoom: zoom,
    center: center,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  window.map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
  window.drawingManager = new google.maps.drawing.DrawingManager({                 
    drawingMode: google.maps.drawing.OverlayType.MARKER,                        
    drawingControl: true,                                                       
    drawingControlOptions: {                                                    
      position: google.maps.ControlPosition.TOP_CENTER,                         
      drawingModes: [                                                           
        google.maps.drawing.OverlayType.POLYGON                                 
      ]                                                                         
    },                                                                          
    circleOptions: {                                                            
      fillColor: '#ffff00',                                                     
      fillOpacity: 1,                                                           
      strokeWeight: 5,                                                          
      clickable: true,                                                         
      editable: true,                                                           
      zIndex: 1                                                                 
    }                                                                           
  });                                                                           
  window.drawingManager.setMap(window.map);                                                   
  google.maps.event.addListener(window.map, 'click', function(event){
    console.log('clicked!');
  });
}

下面是运行drawingManager.setMap(map)的坏版本:

http://jsfiddle.net/spencercarnage/4hD2S/3/

没有drawingManager.setMap(map),它正确地控制来自侦听器的点击日志:

http://jsfiddle.net/spencercarnage/4hD2S/4/

看起来像是绘图管理器正在使用点击事件。如果您在不使用它时禁用它,则单击事件将再次工作。可能是预料之中的,我不知道它是在哪里记录的。

找到问题。替换:

drawingMode: google.maps.drawing.OverlayType.MARKER

:

drawingMode: google.maps.drawing.OverlayType.POLYGON 

新手错误。

最新更新