Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Leaflet : Dynamically count number of feaures loaded into a layer

I have an application where markers/features are loading into layers/layerGroups (what's the right term?) from multiple sources, and they're loading dynamically (based on some attribute in feature.properties and other conditions). I want to be able to tell on the sidepanel the number of markers currently loaded into the layer on display. Given just the layer's variable/identifier, how can one find the number of markers/features loaded into it?

var layer1= L.layerGroup();
layerControl.addOverlay(layer1, 'Layer 1');

... // loading stuff into this layer from different sources

console.log(layer1.length); // doesn't work, gives "undefined"
console.log(JSON.stringify(layer1)); // doesn't work, "TypeError: cyclic object value"

..so I guess layers can't be treated like JSON objects.

I found a related question, but the answer there only addresses markers loaded from one geoJson source and advises a simple counter++ in the onEachFeature. I'm working with a lot of layers in my application and would appreciate not having to put a separate counter variable for each and every one, rather want to just use the layer's variable/identifier to count. If we can add a layer to a map or clustergroup so simply then we ought to be able to count what's in it, right?

like image 737
Nikhil VJ Avatar asked Jul 09 '15 01:07

Nikhil VJ


1 Answers

The getLayers() function returns an array containing all the features in your object. Then you can get the length of that array.

layer_variable.getLayers().length;
like image 168
muzaffar Avatar answered Oct 24 '22 23:10

muzaffar