[英]React-Leaflet: How to listen to LayersControl.Overlay checkbox click events?
我正在动态呈现一些叠加控件并希望将单击事件侦听器绑定到每个控件的复选框。 然而,有没有目前似乎是一种提供一个阵营裁判LayersControl
或onClick
处理程序LayersControl.Overlay
。 有没有更好的方法来实现这个功能?
示例:
<LayersControl>
{overlays.map(el => (
<LayersControl.Overlay
checked={el.checked}
key={el.id}
name={el.label}
>
<GeoJsonLayer {...el} />
</LayersControl.Overlay>
))}
</LayersControl>
使用 ref 获取map
实例,然后监听baselayerchange
事件。 然后使用您的图层名称或 url 您可以实现您想要的行为。
const mapRef = useRef();
useEffect(() => {
const map = mapRef.current.leafletElement;
map.on("baselayerchange", e => {
//do whatever
console.log(e.name);
switch (e.name) {
case "OpenStreetMap.Mapnik":
flyToParis(map);
break;
case "OpenStreetMap.BlackAndWhite":
console.log("do something else");
break;
default:
return;
}
});
}, []);
const flyToParis = map => {
console.log(map);
map.panTo([48.864716, 2.349014]);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.