0

DrawingManagerGoogle マップに機能を追加すると問題が発生します。以下を呼び出す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

Drawing Manager がクリック イベントを消費しているように見えます。使用していないときに無効にすると、クリック イベントが再び機能します。それは予想されるかもしれませんが、どこに文書化されているかわかりません。

于 2013-05-07T21:33:41.997 に答える
0

問題が見つかりました。交換:

drawingMode: google.maps.drawing.OverlayType.MARKER

と:

drawingMode: google.maps.drawing.OverlayType.POLYGON 

新人ミス。

于 2013-05-08T21:50:55.120 に答える