文章目录
使用leaflet-geoman
的过程中发现,在触发pm:cut
后无法继续触发pm:cut/edit/draped/remove
,又想到这一系列事件触发的过程是这样的:
pm:create{
pm:edit{}
pm:draped{}
pm:cut{}
pm:remove{}
}
而pm:cut/draped/remove
执行完毕会回调pm:edit
通过下面实验可知想要后续触发pm:cut/edit/draped/remove
需要拿到pm:cut
后的layer对象:
layer.on('pm:cut', ({ layer }) => {
console.log('pm:cut 1', layer);
layer.on('pm:cut', e => {
console.log('pm:cut 2', e);
}
}
于是问题有了眉目:将pm:cut/edit/draped/remove
抽象出一个方法,在pm:cut
后再次调用并传入layer对象,那不就行了?动手,解决!!!:
map.on("pm:create", ({ layer }) => {
let handler = (layer) => {
layer.on("pm:edit", ({ layer }) => {...});
layer.on("pm:remove", ({ layer }) => {...});
layer.on("pm:cut", ({ layer }) => {
...
handler(layer);
});
};
handler(layer);
});
水。。。over