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

299
Vistas
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 Respuestas
Responde la pregunta

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 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