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

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

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