Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在传单中添加标记?_Javascript_Openstreetmap_Leaflet - Fatal编程技术网

Javascript 如何在传单中添加标记?

Javascript 如何在传单中添加标记?,javascript,openstreetmap,leaflet,Javascript,Openstreetmap,Leaflet,我有一个约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.a

我有一个约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);

}
for(var i=0;i
甚至谷歌浏览器也需要40秒来完成这个循环。我不想看到FF的结果

是否有任何方法可以优化添加许多元素到映射?

var array=[];
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);
对于(var i=0;i

有关更多详细信息,请参阅。

好奇为什么要添加30k元素?这些元素是否都同时被查看?@Alan yep,当群集化时,您是否找到了一种不进行群集化的方法?我也有30+k记录,我需要一次性显示,不进行群集化,并在完成之前处理无响应的浏览器问题?@Elijah hey!自2013年以来,很多事情都发生了变化,但我会尝试回答:)我相信我现在会在服务器端计算一些东西,而不会在浏览器中进行集群。无论如何,它在几年前的表现还可以接受,所以现在至少不会表现得更差。检查你的循环,并在什么时候将点推入传单(检查下面的答案)我有一个大小为30k的lat/long数组,因此当我按照你指定的方式绘制标记时,页面每次都没有响应。标记太多了,你需要聚集或使用热图之类的可视化
var markerArray = [];
markerArray.push(L.marker([51.505, -0.09]));
...
var group = L.featureGroup(markerArray).addTo(map);
map.fitBounds(group.getBounds());