2013-06-28 26 views
12

Tôi có một mảng với ~ 30k phần tử và tôi cần tạo bản đồ với các điểm đánh dấu cho mỗi phần tử. Tôi sử dụng điểm đánh dấu và cố gắng tối ưu hóa thêm thời điểm.Làm thế nào để thêm số lượng lớn đánh dấu trong tờ rơi?

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

} 

Thậm chí Google Chrome mất khoảng 40 giây để thực hiện vòng lặp này. Tôi không muốn thấy kết quả của FF.

Có cách nào để tối ưu hóa việc thêm nhiều yếu tố vào bản đồ không?

+0

Tò mò tại sao bạn thêm 30k yếu tố? Các yếu tố đó có được xem cùng một lúc không? – Alan

+1

@Alan yep, khi được phân cụm http://danzel.github.io/Leaflet.markercluster/example/marker-clustering-realworld.50000.html –

Trả lời

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

Xem chi tiết docs để biết thêm chi tiết.

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

Không tốt hơn để hiển thị từng dấu một không? –

+0

Tôi có một mảng lat/long có kích thước 30k nên khi vẽ sơ đồ đánh dấu như cách bạn chỉ định nhưng trong trường hợp của tôi trang không phản hồi mỗi lần –

+1

đó là quá nhiều điểm đánh dấu, bạn sẽ cần phải cụm hoặc sử dụng trực quan như nhiệt bản đồ – malhal

Các vấn đề liên quan