Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am struggling with geojson popups in leaflet.js I have nested arrays as properties for my features - an example would be counts of fish caught at a location (not my actual project data!)


I am trying to put a popup on each feature (onEachFeature) that states river and a count of each type caught.

I'm binding using a function like this

function onEachFeature(feature, layer) {
        if (feature.properties.fishcaught) {
            var popupcontent;
            popupcontent = "<span style='font-weight:bold'>River: </span>"+feature.properties.river
            for (i=0;i<feature.properties.fishcaught.length;i=i+1){
                var fishstring = "<br><span style='font-weight:bold'>"+feature.properties.fishcaught[i].type+": </span>"
                popupcontent = popupcontent+fishstring;

geojson = L.geoJson(inData, {
    onEachFeature: onEachFeature

The problem is that the onEachFeature is caught in an endless loop. If I remove the for loop from the function, everything works fine.

Any thoughts on this?

What happens if you put a semi-colon after your popupcontent = "... lines? Does the debug console say anything? Canyou set up a jsfiddle of this so that we can edit it? –  alexgleith Oct 22 '13 at 22:19
Thanks for the fiddle request. Of course, the fiddle works fine, and I have long since moved past this issue! Marking my question answered so others might see the code. Cheers! –  abenrob Mar 3 at 21:16

2 Answers 2

It looks like you have a typo in your for loop. It should be:

for (i=0;i<feature.properties.fishcaught.length;i++)

instead of:

for (i=0;i<feature.properties.fishcaught.length;i=i+1)

Notice that the first is incrementing i by one not adding 1 to i.

i++ and i=i+1 and i+=1 all do the same thing. I come from a python background,so often default to the latter 2... jsfiddle.net/abenrob/qHXUM –  abenrob Jan 5 '13 at 17:43
up vote 0 down vote accepted

For whatever it is worth, when I revisited this, and build the fiddle (http://jsfiddle.net/abenrob/28vwV/) it now works... (thanks @alexgleith for the nudge!)

Marking complete so others might see the code.


This site is currently not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .