2013-08-28 17 views

cevap

1

Bunu sizin için gerçekleştirebilecek herhangi bir Broşür eklentisi bilmiyorum. Ancak, bunu yapmak için algoritma çok karmaşık değildir. Bu web sitesini kontrol edin: algoritmayı ve algoritmanın gerçekte nasıl çalıştığını gösteren birçok görsel örneği içeren http://www.mathopenref.com/coordpolygonarea2.html. Broşür poligona sahip bu algoritmayı kullanmak için

function polygonArea(X, Y, numPoints) 
{ 
    area = 0;   // Accumulates area in the loop 
    j = numPoints-1; // The last vertex is the 'previous' one to the first 

    for (i=0; i<numPoints; i++) 
    { area = area + (X[j]+X[i]) * (Y[j]-Y[i]); 
     j = i; //j is previous vertex to i 
    } 
    return area/2; 
} 

, tüm enlem/boylam çiftleri almak için Poligon polygon.getLatLngs() yinelemenize olacaktır. Onları iki ayrı diziye koyun - biri X koordinatı için, diğeri Y koordinatları için. Bunları yukarıdaki işleve parametre olarak ve numPoints için polygon.getLatLngs().length

olarak kullanın. Web sayfasının belirttiği gibi, bu çokgen yolun neresinde başlayacağı önemli değildir. Ancak, saat yönünün tersine bir sırayla başlarsanız, sonucunuz negatif olur. Tüm durumları, bu işlev ne olursa olsun, mutlak değerini elde ederek halledebilirsiniz.

+0

GeodesicArea, basit bir CRS eşlemesiyle benim için başarısız oldu, ancak bu yöntem mükemmel şekilde çalıştı, bu yüzden teşekkür ederiz! – Ecksters

9

Çokgen çizmek için leaflet.draw (https://github.com/Leaflet/Leaflet.draw) kullandım.

Ve jeodesicArea işlevi vardır. 'Draw: created' içinde örnek.

map.on('draw:created', function (e) { 
     var type = e.layerType, 
      layer = e.layer; 
      if (type === 'polygon') 
      { 
       var area = L.GeometryUtil.geodesicArea(layer.getLatLngs()) 
       ...