#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()?