OpenLayers 3 | Продолжить рисование линии
Добавлено: 25 авг 2017, 11:07
Здравствуйте.
У меня есть
- OpenLayers 3.8.1.,
- Карта,
- на карте - слой с линиями (LineString).
Задача: реализовать алгоритм продолжения рисования линии.
Как я это вижу:
0. Допустим, в слое уже есть не менее одной линии. Мне эту линию нужно продолжить.
1. Я выбираю эту линию (ol.interaction.Select).
2. Теперь от курсора тянется линия --- в точности так же, как если бы я в режиме Draw поставил первую точку лайнстринга и искал, где бы поставить вторую. При этом конечной точкой этой линии является мышиный курсор, а начальной - либо стартовая, либо конечная точка продлеваемого лайнстринга, в зависимости от того, к какой точке ближе курсор.
3. Да, по сути, это и есть инструмент рисования новой линии. Только стартовая точка уже определена --- повторюсь, это либо начальная, либо конечная точка продлеваемого лайнстринга.
4. Закончили рисование линии (ЕМНИП, срабатывает событие drawend). И всё, остаётся только слить эти две линии -- старую и свеженарисованную --- в одну. Этот алгоритм у меня уже реализован. Правда, нужно ещё учитывать направление исходной линии, оно должно сохраниться. Это тоже просто.
То есть, собственно алгоритм я придумал. Tl;dr: выбрать линию, которую хотим продлевать; выбрать точку, от которой начнётся продление (просто точка, ближайшая к мышиному курсору); нарисовать новую линию; слить две линии воедино с учётом направления исходной.
Подскажите, пожалуйста, как это реализовать. В каком направлении курить маны.
Спасибо!
У меня есть
- OpenLayers 3.8.1.,
- Карта,
- на карте - слой с линиями (LineString).
Задача: реализовать алгоритм продолжения рисования линии.
Как я это вижу:
0. Допустим, в слое уже есть не менее одной линии. Мне эту линию нужно продолжить.
1. Я выбираю эту линию (ol.interaction.Select).
2. Теперь от курсора тянется линия --- в точности так же, как если бы я в режиме Draw поставил первую точку лайнстринга и искал, где бы поставить вторую. При этом конечной точкой этой линии является мышиный курсор, а начальной - либо стартовая, либо конечная точка продлеваемого лайнстринга, в зависимости от того, к какой точке ближе курсор.
3. Да, по сути, это и есть инструмент рисования новой линии. Только стартовая точка уже определена --- повторюсь, это либо начальная, либо конечная точка продлеваемого лайнстринга.
4. Закончили рисование линии (ЕМНИП, срабатывает событие drawend). И всё, остаётся только слить эти две линии -- старую и свеженарисованную --- в одну. Этот алгоритм у меня уже реализован. Правда, нужно ещё учитывать направление исходной линии, оно должно сохраниться. Это тоже просто.
То есть, собственно алгоритм я придумал. Tl;dr: выбрать линию, которую хотим продлевать; выбрать точку, от которой начнётся продление (просто точка, ближайшая к мышиному курсору); нарисовать новую линию; слить две линии воедино с учётом направления исходной.
Подскажите, пожалуйста, как это реализовать. В каком направлении курить маны.
Спасибо!