Здравствуйте.
У меня есть
- OpenLayers 3.8.1.,
- Карта,
- на карте - слой с линиями (LineString).
Задача: реализовать алгоритм продолжения рисования линии.
Как я это вижу:
0. Допустим, в слое уже есть не менее одной линии. Мне эту линию нужно продолжить.
1. Я выбираю эту линию (ol.interaction.Select).
2. Теперь от курсора тянется линия --- в точности так же, как если бы я в режиме Draw поставил первую точку лайнстринга и искал, где бы поставить вторую. При этом конечной точкой этой линии является мышиный курсор, а начальной - либо стартовая, либо конечная точка продлеваемого лайнстринга, в зависимости от того, к какой точке ближе курсор.
3. Да, по сути, это и есть инструмент рисования новой линии. Только стартовая точка уже определена --- повторюсь, это либо начальная, либо конечная точка продлеваемого лайнстринга.
4. Закончили рисование линии (ЕМНИП, срабатывает событие drawend). И всё, остаётся только слить эти две линии -- старую и свеженарисованную --- в одну. Этот алгоритм у меня уже реализован. Правда, нужно ещё учитывать направление исходной линии, оно должно сохраниться. Это тоже просто.
То есть, собственно алгоритм я придумал. Tl;dr: выбрать линию, которую хотим продлевать; выбрать точку, от которой начнётся продление (просто точка, ближайшая к мышиному курсору); нарисовать новую линию; слить две линии воедино с учётом направления исходной.
Подскажите, пожалуйста, как это реализовать. В каком направлении курить маны.
Спасибо!
OpenLayers 3 | Продолжить рисование линии
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers 3 | Продолжить рисование линии
А если две линии соприкасаются концами - с какой тогда объединять?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
Re: OpenLayers 3 | Продолжить рисование линии
Denis Rykov, что именно вы имеете в виду? Ситуацию, когда обе линии соприкасаются обоими концами, когда они имеют общие начало и конец, образуют замкнутую структуру и больше похожи на полигон?
Хм... Ну в этом случае пусть будет лайнстринг, координаты конечной точки которого совпадают с координатами начальной точки.
Хм... Ну в этом случае пусть будет лайнстринг, координаты конечной точки которого совпадают с координатами начальной точки.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей