2013-03-07 282 views

回答

9

见事件对象(http://leafletjs.com/reference.html#event-objects):

var map = L.map('map').setView([53.902257, 27.561640], 13); 

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map); 

var bounds = [[53.912257, 27.581640], [53.902257, 27.561640]]; 

var rect = L.rectangle(bounds, {color: 'blue', weight: 1}).on('click', function (e) { 
    // There event is event object 
    // there e.type === 'click' 
    // there e.lanlng === L.LatLng on map 
    // there e.target.getLatLngs() - your rectangle coordinates 
    // but e.target !== rect 
    console.info(e); 
}).addTo(map); 

使用e.target.getLatLngs()

5

Leaflet.draw plugin使用标准Leaflet's L.Rectangle

单张的矩形延伸Polygon。多边形延伸Polyline

因此,为了获得Leaflet.draw矩形的坐标,您可以使用Polyline的方法getLatLngs(),该方法返回路径中点的数组。

例子:

var drawnItems = new L.FeatureGroup(); 
map.addLayer(drawnItems); 

map.on('draw:created', function (e) { 

    var type = e.layerType, 
     layer = e.layer; 

    if (type === 'rectangle') { 
     layer.on('mouseover', function() { 
      alert(layer.getLatLngs());  
     }); 
    } 

    drawnItems.addLayer(layer); 
}); 
+0

你知道为什么layer.toGeoJSON()geometry.coordinates将新增另一个坐标。 – Spir 2015-07-07 08:13:51