Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

295
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!