Листовка.нарисуйте событие испускания, чтобы остановить рисование

#javascript #leaflet #leaflet-draw

#javascript #листовка #leaflet-draw

Вопрос:

Используя 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

Ответ №1:

Вы можете сделать это, автоматически запустив второй щелчок, чтобы завершить фигуру

 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());

    }
});
  

Комментарии:

1. Есть идеи о том, как вызвать Draw.completeShape()?