2013-06-28 2 views
12

У меня есть массив с элементами ~ 30k, и мне нужно создать карту с маркерами для каждого из них. Я использую markerclusters и пытаюсь оптимизировать момент добавления.Как добавить маркеры в листовку?

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

} 

Даже для этого цикла Google Chrome занимает около 40 секунд. Я не хочу видеть результат FF.

Есть ли способ оптимизировать добавление многих элементов для отображения?

+0

Любопытно, почему вы добавляете элементы 30k? Эти элементы просматриваются сразу? – Alan

+1

@Alan yep, при кластеризации http://danzel.github.io/Leaflet.markercluster/example/marker-clustering-realworld.50000.html –

ответ

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

Для получения более подробной информации см. docs.

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

Не лучше ли показывать маркеры по одному? –

+0

У меня есть массив lat/long размером 30k, поэтому, когда вы рисуете маркеры так же, как вы указали, но в моем случае страница становится неактуальной каждый раз –

+1

, что слишком много маркеров, вам нужно сгруппировать или использовать визуализацию, такую ​​как нагрев карта – malhal