将位置插入集合后,重新绘制标记和簇

redraw markers and clusters after location was inserted into collection

本文关键字:绘制 新绘制 插入 位置 集合      更新时间:2023-12-27

我有一张地图,其中我的标记和簇用传单渲染。我有一个集合,我在其中存储了纬度/经度等信息。

我像这样迭代集合,在中插入标记

在Template.map.rendered 中

Locations.find({}).forEach(function(obj){
     console.log("Adding: lat " + obj.latitude + " - long " + obj.longtitude);
     var m = L.marker([obj.latitude,obj.longtitude]);
     markers.addLayer(m);
});

在模板渲染完成后,我如何绘制新的插入位置,以便实时更新地图?

与您在模板中所做的完全相同。如果您引用了MarkerCluster层(我假设是markers),只需使用该层的addLayer方法:

markers.addLayer(L.Marker([0,0]);

如果你想批量添加标记,你可以使用方法addLayers:

markers.addLayers([
    L.Marker([0,0]),
    L.Marker([1,1])
]);

MarkerCluster将处理其余部分,您也可以在安装MarkerCluster:时使用选项中的animateAddingMarkers为新插入设置动画

new L.MarkerClusterGroup({
    'animateAddingMarkers': true
});

animateAddingMarkers:如果设置为true,则在MarkerClusterGroup添加到贴图后,向其添加单个标记将添加标记并在簇中设置其动画。默认为false,因为这在批量添加标记时提供了更好的性能。addLayers不支持此功能,仅支持带有单个标记的addLayer。

查看Github上的README.MD:https://github.com/Leaflet/Leaflet.markercluster