Как программно связать точки рисования в mapbox-gl-draw - PullRequest
0 голосов
/ 04 июня 2018

Я использую довольно простую реализацию библиотеки mapbox-gl-draw и могу успешно нарисовать точку с помощью приведенного ниже примера.

mapObject.drawing = new MapboxDraw({
  styles: MAPBOX_DRAW_STYLES,
  displayControlsDefault: false,
  controls: {
    trash: true
  }
});
mapObject.map.addControl(mapObject.drawing);
mapObject.drawing.changeMode('draw_point');

После этого я могу захватить объект вв событии 'draw.create'

this.mapObject.map.on('draw.create', e => {
  console.log(e.features[0]);
});

Именно в этом событии я хочу иметь возможность установить режим обратно для рисования точек, чтобы пользователь мог рисовать несколько точек.Я пробовал много итераций ниже:

this.mapObject.map.on('draw.create', e => {
  console.log(e.features[0]);
  mapObject.drawing.getMode(); // draw_point
  mapObject.drawing.changeMode('simple_select');
  mapObject.drawing.getMode(); // simple_select
  mapObject.drawing.changeMode('draw_point');
  mapObject.drawing.getMode(); // draw_point
});

Кажется, что рисование точки еще не закончено.Документация заставляет меня поверить, что по умолчанию она должна вернуться к simple_select - По умолчанию рисование выполняется в режиме simple_select и автоматически переходит в режим simple_select каждый раз, когда пользователь завершает рисование объекта иливыход из режима direct_select.

Как включить рисование дополнительных точек сразу после друг друга?

https://plnkr.co/x3R0TtHsNGzxPxAOL7HH

1 Ответ

0 голосов
/ 06 июня 2018

Я разместил это в репозитории Github, и это было подтверждено как ошибка - https://github.com/mapbox/mapbox-gl-draw/issues/793#issuecomment-394568205

Предлагаемый обходной путь - использовать событие draw.modechange.

map.on('draw.modechange', e => {
    drawing.changeMode('draw_point');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...