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

296
Visualizações
Check if a point resides inside a leaflet semiCircle

I have some cell sites: every cell has angle degree orientation and a range in km I fetch these cells from the db and represent them on a leaflet map with semiCircles as shown here : screenshot of my map

And I have a home address (coords) that I want to check if it is covered by (one or some) of the cells

As I couldn't find a way to check if a point(home) resides inside a semiCircle, I decided to convert my semiCircle to L.Geojson in order to use the leaflet-pip plugin

Converstion code :

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)

But when I use the leafletPip.pointInLayer(home, cellLayer, [false]) it return always an empty array that means the home is not covered by any cell, I think the cause is that the semiCircle created by the pointToLayer function is just a marker and its layer is treated as a point

I've tried other leaflet plugins such as Leaflet.PointInPolygon ... but it doesn't work cuz the semiCircle is not a polygon

So I need your help to determine if the home is covered or no

and I'm sorry for the bad english

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

I suspect you are using the plugin jieter/Leaflet-semicircle.

This plugin already implements a function _containsPoint(p) which you could call using
p = map.latLngToLayerPoint(L.latLng(yourXCoord,yourYCoord)).
The function expects a L.point, which you will have to convert to first using your maps latLngToLayerPoint() function.
Reference: https://github.com/jieter/Leaflet-semicircle/blob/master/Semicircle.js

If that doesn't work or you are using a different plugin, you could also implement this function yourself (possibly using the above-mentioned file for guidance).
This is not completly trivial, but should be possible with the following Ressources:

How-To: How to determine whether a point (X,Y) is contained within an arc section of a circle (i.e. a Pie slice)?

  1. Determine the (simplified) Radius using Pythagoras or (more accurate) Haversine Formula
  2. Find the angle between two points in a 2d-space
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