Я хочу, чтобы пользователь мог рисовать линию (полилинию только с двумя точками).
Я включаю рисование и слушаю vertexadded
. Когда количество маркеров _rings
равно 2, я отключаю рисование.
Это кажется неправильным по нескольким причинам:
- Я получаю доступ к частной переменной
_rings
- Теперь я отключаю рисование, но чтобы визуализировать линию, я должен повторно инициировать ее в визуальном режиме.
- Чтобы позволить пользователю перемещать 2 точки линии, я должен повторно инициировать линию в режиме редактирования.
- В режиме редактирования должно быть отключено разделение линии между двумя маркерами, возможно ли это?
Мне не хватает более простого способа сделать это?
map.pm.enableDraw('Line', {
snappable: true,
snapDistance: 20,
});
map.on('pm:drawstart', (event: any) => {
const { workingLayer } = event;
workingLayer.on('pm:vertexadded', (e: any) => {
if (workingLayer._rings[0].length >= 2) {
map.pm.disableDraw('Line', {
snappable: true,
snapDistance: 20,
});
}
});
});