2013-06-28 9 views
12

Mam tablicę z ~ 30k elementów i muszę utworzyć mapę ze znacznikami dla każdego z nich. Używam markerów i próbuję zoptymalizować moment dodawania.Jak dodać znaczniki w ulotce?

for (var i = 0; i < myItems.length; i++) { 
    var item = myItems[i]; 

    marker = new L.marker([item[2],item[3]], { 
     icon: mapOpts.myIcon 
    }).bindPopup(item[1]); 

    markers.addLayer(marker); 

} 

Nawet Google Chrome trwa około 40 sekund, aby wykonać tę pętlę. Nie chcę widzieć wyniku FF.

Czy istnieje sposób na optymalizację dodawania wielu elementów do mapy?

+0

Ciekawi Cię, dlaczego dodajesz 30 tys. Elementów? Czy wszystkie elementy są oglądane jednocześnie? – Alan

+1

@Alan yep, gdy jest w klastrze http://danzel.github.io/Leaflet.markercluster/example/marker-clustering-realworld.50000.html –

Odpowiedz

8
var array = []; 

for (var i = 0; i < myItems.length; i++) { 
    var item = myItems[i]; 

    marker = new L.marker([item[2],item[3]], { 
     icon: mapOpts.myIcon 
    }).bindPopup(item[1]); 

    array.push(marker); 
} 

markers.addLayers(array); 

Aby uzyskać więcej informacji, patrz docs.

11
var markerArray = []; 
markerArray.push(L.marker([51.505, -0.09])); 
... 
var group = L.featureGroup(markerArray).addTo(map); 
map.fitBounds(group.getBounds()); 
+0

Czy nie lepiej wyświetlać markery jeden po drugim? –

+0

Mam tablicę lat/długości o wielkości 30k, więc kiedy kreślę znaczniki tak, jak to określiłeś, ale w moim przypadku strona przestaje odpowiadać za każdym razem –

+1

to zbyt wiele znaczników, musisz skupić się lub użyć wizualizacji jak ciepło mapa – malhal