Jonathan Cox
Jonathan Cox

Reputation: 361

How to get Leaflet GeoJSON feature containing a given latitude/longitude point

I have a LeafletJS map with a GeoJSON layer that contains multiple polygons. If a user enters a latitude/longitude coordinate that falls within the GeoJSON layer, the script should retrieve the feature that contains that point and log some information about it to the console.

I can't simply use Leaflet's built-in event handling because the latitude and longitude coordinates are generated by a separate input field, not by direct interaction with the map. So my question is not a duplicate of this.

I'm looking for something similar to getFeatureContainingLatLng() in the example below:

var map = L.map('map');
var geojson = L.geoJson(myGeojson);

geojson.addTo(map);

$.on('address input changed event', function(lat, lng) {
    var myFeature = geojson.getFeatureContainingLatLng(lat, lng);
    console.log(myFeature.properties);
});

Upvotes: 2

Views: 3029

Answers (1)

IvanSanchez
IvanSanchez

Reputation: 19069

The plugins Leaflet.CheapLayerAt or Leaflet-pip should help. Both approaches will solve your problem, albeit they have different advantages and disadvantages specially in terms of algorithmic complexity.

Upvotes: 4

Related Questions