Leaflet 单击特定标记时是否启用覆盖?

Leaflet 单击特定标记时是否启用覆盖?,leaflet,Leaflet,我的地图中有多个默认情况下都已禁用的覆盖: var overlays = { 'Overlay #1': overlay1, 'Overlay #2': overlay2, 'Overlay #3': overlay3 }; L.control.layers(baseMaps, overlays).addTo(mymap); 我想这样做,当你点击一个特定的标记时,重叠2就会出现。我希望它在图层控制对话框中显示为选中状态,并且也希望它显示在地图上。我现在不太清楚的是:(

我的地图中有多个默认情况下都已禁用的覆盖:

var overlays = {
    'Overlay #1': overlay1,
    'Overlay #2': overlay2,
    'Overlay #3': overlay3
};

L.control.layers(baseMaps, overlays).addTo(mymap);
我想这样做,当你点击一个特定的标记时,重叠2就会出现。我希望它在图层控制对话框中显示为选中状态,并且也希望它显示在地图上。我现在不太清楚的是:(1)如何使javascript在打开特定弹出窗口或单击特定标记时运行;(2)如何如我所述打开覆盖

这是我的标记代码:

L.marker({lat: 30.266293, lon: -97.656965}, {icon: myIcon})
    .addTo(mymap)
    .bindPopup("<b>Hello world!</b>");
L.marker({lat:30.266293,lon:-97.656965},{icon:myIcon})
.addTo(mymap)
.bindpoop(“你好,世界!”);
我想我可以利用这个机会,但这是最好的方式吗?这个答案已经有将近八年的历史了

就打开覆盖层而言。。。是否执行
$(“.传单控制层覆盖标签输入”).trigger('click')
,但这看起来会打开所有覆盖,而不仅仅是其中一个。我想我可以做
.eq(1)
或类似的事情,但那似乎太不雅观了


有什么想法吗?

你可以在事件中点击
L.marker
,捕捉点击并采取某种行动。假设我们设置了一组相关的标记和覆盖:

//一些标记
var littleton=L.marker([39.61,-105.02])
.bindpoop(“我是利特尔顿公司”)
.addTo(地图),
丹佛=L.marker([39.71,-105.12])
.bindpoop(“我是丹佛公司”)
.addTo(地图);
//一些覆盖层:
const overlay1=L.imageOverlay(imageUrl[
[39.61, -105.02],
[39.71, -105.12]
]).addTo(地图);
const overlay2=L.imageOverlay(imageUrl[
[39.71, -105.12],
[39.81, -105.22]
]).addTo(地图);
我们可以将覆盖添加到图层控件:

var overlaymap={
覆盖层1:覆盖层1,
覆盖层2:覆盖层2,
};
L.control.layers(null,overlyMaps).addTo(map);
然后,我们可以创建一个对象,将每个标记与覆盖相关联,并跟踪其当前是否在地图上:

const markerslayers=[
{
马克:利特尔顿,
覆盖层:覆盖层1,
onmap:是的
},
{
马克:丹佛,
覆盖层:覆盖层2,
onmap:是的
}
];
对于每个标记,我们可以创建一个onclick事件,用于打开或关闭其关联的覆盖:

markerslayers.forEach((mlayer)=>{
mlayer.marker.on(“单击”,()=>{
if(mlayer.onmap){
mlayer.overlay.remove();
mlayer.onmap=false;
}否则{
mlayer.overlay.addTo(map);
mlayer.onmap=true;
}
});
});