Javascript Leavelt Marker群集:放大后在childmarker上打开弹出窗口

Javascript Leavelt Marker群集:放大后在childmarker上打开弹出窗口,javascript,popup,leaflet,markerclusterer,leaflet.markercluster,Javascript,Popup,Leaflet,Markerclusterer,Leaflet.markercluster,我有一张传单和地图,正在使用。 标记的数据作为json来自外部服务 加载地图后,所有可见标记的弹出窗口都会按我的需要打开。 但当我缩小地图时,标记将聚集在一起,弹出窗口将消失。 在这一点上,一切都很好,但当我放大时,我想再次打开每个子标记的弹出窗口,而不单击标记本身 目前代码如下所示: vehicleClusterMarkers = L.markerClusterGroup({ maxClusterRadius: 45, spiderfyOnMaxZoom: false });

我有一张传单和地图,正在使用。 标记的数据作为json来自外部服务

加载地图后,所有可见标记的弹出窗口都会按我的需要打开。 但当我缩小地图时,标记将聚集在一起,弹出窗口将消失。 在这一点上,一切都很好,但当我放大时,我想再次打开每个子标记的弹出窗口,而不单击标记本身

目前代码如下所示:

vehicleClusterMarkers = L.markerClusterGroup({
    maxClusterRadius: 45,
    spiderfyOnMaxZoom: false
});
vehicleClusterMarkers.addLayer(TTJsonLayer);

//vehicleClusterMarkers.addTo(map);
map.addLayer(vehicleClusterMarkers);

vehicleClusterMarkers.eachLayer(function(layer) {
    layer.openPopup();
});         
我做了一些研究,但目前我不知道如何解决这个问题

如果有人有一些建议,那就太好了。
谢谢

有几种可能的解决方案可以自动打开未聚集标记的弹出窗口。您必须使用事件侦听器,并且您可以侦听事件,或者可能更好地侦听事件(因为lapper.markercluster也会将标记从视图中移除,因此在不更改缩放级别的情况下平移会显示一些新标记)

markercluster插件会在标记聚集时自动从地图中删除标记,并在标记取消聚集时重新添加标记

“layeradd”
上,检查添加的层是否是单个标记(即类
L.Marker
的实例),而不是簇。如果是单个标记,则打开其弹出窗口:

var map=L.map(“map”{
closePopupOnClick:false,
最大缩放:18
}).setView([48.85,2.35],11);
映射('layeradd',函数(事件){
var层=event.layer;
if(L.Marker的层实例&!(L.MarkerCluster的层实例)){
layer.openPopup();
}
});
var mcg=L.markerClusterGroup();
对于(变量i=0;i<10;i+=1){
L.marker(getRandomLatLng()).addTo(mcg).bindpoop('marker'+i{
自动关闭:错误,
自动扫描:错误
});
}
麦加·阿多(map);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
属性:“©;贡献者”
}).addTo(地图);
函数getRandomLatLng(){
返回[
48.8+0.1*数学随机(),
2.25+0.2*数学随机()
];
}

您有几种可能的解决方案可以自动打开未聚集标记的弹出窗口。您必须使用事件侦听器,并且您可以侦听事件,或者可能更好地侦听事件(因为lapper.markercluster也会将标记从视图中移除,因此在不更改缩放级别的情况下平移会显示一些新标记)

markercluster插件会在标记聚集时自动从地图中删除标记,并在标记取消聚集时重新添加标记

“layeradd”
上,检查添加的层是否是单个标记(即类
L.Marker
的实例),而不是簇。如果是单个标记,则打开其弹出窗口:

var map=L.map(“map”{
closePopupOnClick:false,
最大缩放:18
}).setView([48.85,2.35],11);
映射('layeradd',函数(事件){
var层=event.layer;
if(L.Marker的层实例&!(L.MarkerCluster的层实例)){
layer.openPopup();
}
});
var mcg=L.markerClusterGroup();
对于(变量i=0;i<10;i+=1){
L.marker(getRandomLatLng()).addTo(mcg).bindpoop('marker'+i{
自动关闭:错误,
自动扫描:错误
});
}
麦加·阿多(map);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
属性:“©;贡献者”
}).addTo(地图);
函数getRandomLatLng(){
返回[
48.8+0.1*数学随机(),
2.25+0.2*数学随机()
];
}

这是我在研究解决此问题的文档后提出的解决方案。它也可以工作,但会打开所有弹出窗口,即使它们已经打开,我不知道这是否会对地图的性能产生负面影响

map.on('zoomend', function() {
    vehicleClusterMarkers.eachLayer(function(layer) {
        layer.openPopup();
    });
});

这是我在研究了解决此问题的文档后的解决方案。它也可以工作,但会打开所有弹出窗口,即使它们已经打开,我不知道这是否会对地图的性能产生负面影响

map.on('zoomend', function() {
    vehicleClusterMarkers.eachLayer(function(layer) {
        layer.openPopup();
    });
});

非常感谢,在这一天,我研究了传单文档,认为事件侦听器也许可以解决我的问题,这是正确的。还有一个问题:如何以及是否可以仅在clustermarker层打开弹出窗口?目前,我还有其他层也使用了
L.marker
,在触发
layeradd
后,非集群层的最后一个标记的弹出窗口是打开的。还有另一个问题:
map.on('layeradd')
工作正常,但是,我在地图上有另一个
L.marker
,每次添加图层时,错误标记上的弹出窗口也会出现。我尝试了不同的方法来排除L.marker,例如使用
.hasLayer()
L.featureGroup
L.stamp
来获取id,目前我对缺少的成功感到有点失望。有人能给我一些建议吗?请为你的新问题提出一个新问题,包括相关的细节和代码。非常感谢。在我研究传单文档的当天,我认为事件侦听器可能会解决我的问题,这是正确的。还有一个问题:如何以及是否可以只在clustermarker层打开弹出窗口?目前,我还有其他层也使用了
L.marker
,在触发
layeradd
后,非集群层的最后一个标记的弹出窗口是打开的。还有另一个问题:
map.on('layeradd')
工作正常,但是,我在地图上有另一个
L.marker
,每次添加图层时,错误标记上的弹出窗口也会出现。我尝试了不同的方法来排除L.marker,例如使用
.hasLayer()
L.featureGroup
L.stamp
来获取id,目前我对缺少的成功感到有点失望。有谁能给我一个建议吗?请为你的新问题提出一个新问题,包括相关的细节和代码。