Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

305
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda