Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

297
Vistas
Comprobar si un punto reside dentro de un folleto semicírculo

Tengo algunos sitios de celdas: cada celda tiene una orientación de grado de ángulo y un rango en km. Obtengo estas celdas de la base de datos y las represento en un mapa de folleto con semicírculos como se muestra aquí: captura de pantalla de mi mapa

Y tengo una dirección de casa (coords) que quiero verificar si está cubierta por (una o algunas) de las celdas

Como no pude encontrar una manera de verificar si un punto (casa) reside dentro de un semicírculo, decidí convertir mi semicírculo a L.Geojson para usar el complemento leaflet -pip

Código de conversión:

 let cellGeojson = { "features": [ { "type": "Feature", "properties": { "id": cell.id, "name": cell.name, "coords": cell.latitude + "," + cell.longitude, "lat": cell.latitude, "long": cell.longitude, "location": cell.location, "azimuth": cell.azimuth, }, "geometry": { "type": "Point", "coordinates": [cell.longitude, cell.latitude] } } ] } let cellLayer = L.geoJSON(cellGeojson, { pointToLayer: function (pointFeature, latlng) { let rangeMarker = L.semiCircle([cell.latitude,cell.longitude], { radius: cell.range, startAngle: cell.angle - 30, stopAngle: cell.angle + 30 }); return rangeMarker; }, }).addTo(this.map)

Pero cuando uso el leafletPip.pointInLayer(home, cellLayer, [false]) siempre devuelve una matriz vacía que significa que la casa no está cubierta por ninguna celda, creo que la causa es que el semicírculo creado por la función pointToLayer es solo un el marcador y su capa se tratan como un punto

Probé otros complementos de folletos como Leaflet.PointInPolygon ... pero no funciona porque el semicírculo no es un polígono

Entonces necesito su ayuda para determinar si la casa está cubierta o no.

y lo siento por el mal inglés

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sospecho que está utilizando el complemento jieter/Leaflet-semicircle .

Este complemento ya implementa una función _containsPoint(p) a la que podría llamar usando
p = map.latLngToLayerPoint(L.latLng(yourXCoord,yourYCoord)) .
La función espera un L.point , al que tendrá que convertir primero usando la función latLngToLayerPoint() de sus mapas.
Referencia: https://github.com/jieter/Leaflet-semicircle/blob/master/Semicircle.js

Si eso no funciona o está utilizando un complemento diferente, también puede implementar esta función usted mismo (posiblemente utilizando el archivo mencionado anteriormente como guía).
Esto no es completamente trivial, pero debería ser posible con los siguientes recursos:

Cómo hacerlo: ¿Cómo determinar si un punto (X,Y) está contenido dentro de una sección de arco de un círculo (es decir, una porción circular)?

  1. Determine el radio (simplificado) usando la fórmula de Pitágoras o (más precisa) de Haversine
  2. Encuentra el ángulo entre dos puntos en un espacio 2d
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda