0

DrawingManager将功能添加到 Google 地图时遇到了问题。当我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/

4

2 回答 2

0

发现了问题。代替:

drawingMode: google.maps.drawing.OverlayType.MARKER

和:

drawingMode: google.maps.drawing.OverlayType.POLYGON 

菜鸟失误。

于 2013-05-08T21:50:55.120 回答
0

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

于 2013-05-07T21:33:41.997 回答