Saltar al contenido

Como llegar al area string desde un polígono usando leaflet.draw

Te sugerimos que pruebes esta respuesta en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

Puede acceder a la biblioteca de utilidades de geometría proporcionada con Leaflet.

var area = L.GeometryUtil.geodesicArea(layer.getLatLngs());

En su ejemplo, está intentando acceder a un control en sí, que es a lo que está asignada la variable createPolygon. En su lugar, desea tomar el área de la capa que se dibujó.

map.on('draw:created', function (e) 
  var type = e.layerType,
      layer = e.layer;
  if (type === 'polygon') 
    polygons.addLayer(layer);
    var seeArea = L.GeometryUtil.geodesicArea(layer.getLatLngs());
    console.log(seeArea);
  

Una vez que verifique que está obteniendo el área, puede simplemente asignarla a las variables que pueblan la tabla junto al mapa.

Nota: el área estará en metros cuadrados por defecto

Descubrí que ninguna de las respuestas anteriores funcionó para calcular el área de no contiguo polígonos. Aquí hay un polígono de ejemplo donde las funciones anteriores devolvieron un área de 0:

Polígono no contiguo

Para cualquiera que necesite hacer eso, aquí está el código que funcionó para mí (usando el L.GeometryUtil función de Leaflet.draw):

var poly = // Your polygon layer here; may or may not be contiguous
var area = 0;
for (island of poly.getLatLngs()) 
    // If the polygon is non-contiguous, access the island
    if (island.length < 2) 
        island = island[0]
    
    // Sum the area within each "island"
    area += L.GeometryUtil.geodesicArea(island);

L.GeometryUtil.geodesicArea(layer.getLatLngs())[0] debería llevarte el área.

Pero terminé usando leaflet-geoman-free hacer el dibujo y usar turf.js para conseguir la zona.

map.pm.enableDraw('Polygon', 
   snappable: true,
   snapDistance: 20,
);

map.on('pm:create', e => 
   const layer = e.layer
   alert(turf.area(layer.toGeoJSON()))
);

Puntuaciones y comentarios

Si te ha resultado útil nuestro post, sería de mucha ayuda si lo compartes con el resto desarrolladores de esta manera nos ayudas a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *