Leaflet.draw 发出事件以停止绘图

Leaflet.draw emit event to stop drawing

使用 leaflet-draw,当我用多边形绘制时,我需要在矩形的第二个点固定后结束绘图。在

中监听 'drawvertex' 事件两次
mymap.on(L.Draw.Event.DRAWVERTEX, function(e){
    console.log("draw 1st vertex--")
    // console.log(e)

    mymap.on(L.Draw.Event.DRAWVERTEX, function(e){

        console.log("draw 2nd vertex, now need to be closed! ---", e)

        let tmp = e.layers;

        // mymap.emit(L.Draw.Event.DRAWSTOP, function (e){
        //  console.log("draw stopped...")
        // })

        // mymap.emit('draw:drawstop', function (e){
        //  console.log("draw stopped...")
        // })

        // tmp.completeShape()

        // drawnItems.completeShape()
    })
    // if(e.layerType == "polyne"){
    //  console.log(" e la retta..")
    // }
})

我尝试使用 emit 和 completeShape 函数,但没有用,我尝试使用与“完成”按钮相同的方法(当您单击多边形进行绘制时),但我没有找到源上的方法。这是我的代码框 https://codesandbox.io/s/romantic-jepsen-7esnz?file=/index.html

您可以自动触发第二次点击来完成形状

mymap.on(L.Draw.Event.DRAWVERTEX, function (e) {

    const layerIds = Object.keys(e.layers._layers);

    if (layerIds.length > 1) {

        const secondVertex = e.layers._layers[layerIds[1]]._icon;

        requestAnimationFrame(() => secondVertex.click());

    }
});