Функция Leaflet eachLayer не перебирает все слои - PullRequest
0 голосов
/ 15 мая 2018

Создано несколько маркеров с использованием массива данных GeoJSON:

$.getJSON("GetLocationsServlet", function(data) {
    L.geoJSON(data, {
        onEachFeature: onEachFeature
    }).addTo(mymap);
});

Данные GeoJSON выглядят так:

[
{ "type": "Feature", "properties": { "name": "Riverway Sport Complex", "amenity": "GYM", "popupContent": "Riverway Sport Complex" }, "geometry": { "type": "Point", "coordinates": [-123.002846, 49.205036] },"id" : "1"} ,
{ "type": "Feature", "properties": { "name": "Imperial@Patterson", "amenity": "GYM", "popupContent": "Imperial@Patterson" }, "geometry": { "type": "Point", "coordinates": [-123.01249, 49.22193] },"id" : "2"} 
]

Маркеры были успешно созданы и показаны на карте. В какой-то момент позже мне понадобилось перебрать все маркеры, поэтому я использовал функцию eachLayer:

    var mymap = L.map('mapid').locate({setView: true, maxZoom: 15});

    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png? '
    access_token=..., {
    maxZoom: 25,
    attribution: 
    id: 'mapbox.streets',
    }).addTo(mymap);

    .......
    $.getJSON( L.geoJSON()... )        
    .......

    mymap.eachLayer(function(layer) {
        alert (layer.options.id); 
       // Above alert successfully print out the tileLayer ID
        if (layer instanceof L.Marker) {
            alert("Marker [" + layer.options.title + "]");
        }
    });

Однако, он только перебрал основной слой tileLayer и остановился. Я правильно использую метод eachLayer? Маркер тоже подкласс Layer?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...