2013-06-28 16 views
12

Ho un array con ~ 30k elementi e ho bisogno di creare una mappa con marcatori per ciascuno di essi. Uso markerclusters e cerco di ottimizzare l'aggiunta di momento.Come aggiungere marcatori alla rinfusa nell'opuscolo?

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); 

} 

Anche Google Chrome impiega circa 40 secondi per eseguire questo ciclo. Non voglio vedere il risultato di FF.

C'è un modo per ottimizzare l'aggiunta di molti elementi alla mappa?

+0

Curioso perché stai aggiungendo 30k elementi? Questi elementi vengono tutti visualizzati contemporaneamente? – Alan

+1

@Alan sì, quando cluster http://danzel.github.io/Leaflet.markercluster/example/marker-clustering-realworld.50000.html –

risposta

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); 

Vedere docs per ulteriori dettagli.

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

Non è meglio visualizzare i marcatori uno per uno? –

+0

Ho una matrice di lat/long di dimensione 30k, quindi quando sto tracciando i marcatori come nel modo specificato ma nel mio caso la pagina non risponde ogni volta –

+1

sono troppi indicatori, è necessario raggruppare o utilizzare una visualizzazione come il calore carta geografica – malhal

Problemi correlati