2017-09-11 26 views
-1

我沒有在我的代碼中使用監聽器,那麼我如何從繪圖中獲得每個座標點?我如何才能與繪圖協調?

 function initMap() { 
     var map = new google.maps.Map(document.getElementById('map'), { 
     center: {lat: -34.397, lng: 150.644}, 
     zoom: 8 
     }); 

     var drawingManager = new google.maps.drawing.DrawingManager({ 
     drawingMode: google.maps.drawing.OverlayType.MARKER, 
     drawingControl: true, 
     drawingControlOptions: { 
      position: google.maps.ControlPosition.TOP_CENTER, 
      drawingModes: ['polygon', 'polyline'] 
     }, 

     circleOptions: { 
      fillColor: '#ffff00', 
      fillOpacity: 1, 
      strokeWeight: 5, 
      clickable: false, 
      editable: true, 
      zIndex: 1 
     } 
     }); 
     drawingManager.setMap(map); 
} 

小提琴:https://jsfiddle.net/31aey9mk/

+0

@downvoter你爲什麼低估我的問題?我可以知道原因嗎? – user7397787

回答

2

我已經更新了你的提琴here

基本上,您需要傳遞一個您希望使用的類型的數組google.map.drawing.OverlayType。在這種情況下,我添加了一個標記和多邊形。

然後,你需要在initMap()方法添加的事件處理程序時,圖紙已完成拍攝:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) 
{ 
    if (event.type === 'marker') console.log('Lat: ' + event.overlay.position.lat() + ', Long: ' + event.overlay.position.lng()) 
    else console.log(event.overlay.getPath().b); 
}); 

哪個抓住事件,這是繪製的形狀/標記。

+0

謝謝soo much.How我可以得到確切的經緯度和lng,而不是'console.log(event.overlay.getPath()。b);' – user7397787

+1

那麼,一個地平線/多邊形有多個點,因此它是合乎邏輯的,它返回一系列的latlngs。你想要做的是遍歷返回的數組,並將它們存儲在任何需要的地方。 –

+0

但我越來越undefined – user7397787

相關問題