OpenLayers 3 | Продолжить рисование линии

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Алексей Борисов
Активный участник
Сообщения: 135
Зарегистрирован: 02 авг 2014, 18:29
Репутация: 21
Откуда: Москва

OpenLayers 3 | Продолжить рисование линии

Сообщение Алексей Борисов » 25 авг 2017, 11:07

Здравствуйте.
У меня есть
- OpenLayers 3.8.1.,
- Карта,
- на карте - слой с линиями (LineString).

Задача: реализовать алгоритм продолжения рисования линии.

Как я это вижу:
0. Допустим, в слое уже есть не менее одной линии. Мне эту линию нужно продолжить.
1. Я выбираю эту линию (ol.interaction.Select).
2. Теперь от курсора тянется линия --- в точности так же, как если бы я в режиме Draw поставил первую точку лайнстринга и искал, где бы поставить вторую. При этом конечной точкой этой линии является мышиный курсор, а начальной - либо стартовая, либо конечная точка продлеваемого лайнстринга, в зависимости от того, к какой точке ближе курсор.
3. Да, по сути, это и есть инструмент рисования новой линии. Только стартовая точка уже определена --- повторюсь, это либо начальная, либо конечная точка продлеваемого лайнстринга.
4. Закончили рисование линии (ЕМНИП, срабатывает событие drawend). И всё, остаётся только слить эти две линии -- старую и свеженарисованную --- в одну. Этот алгоритм у меня уже реализован. Правда, нужно ещё учитывать направление исходной линии, оно должно сохраниться. Это тоже просто.

То есть, собственно алгоритм я придумал. Tl;dr: выбрать линию, которую хотим продлевать; выбрать точку, от которой начнётся продление (просто точка, ближайшая к мышиному курсору); нарисовать новую линию; слить две линии воедино с учётом направления исходной.

Подскажите, пожалуйста, как это реализовать. В каком направлении курить маны. :)
Спасибо!

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3370
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 519
Ваше звание: Author
Контактная информация:

Re: OpenLayers 3 | Продолжить рисование линии

Сообщение Denis Rykov » 25 авг 2017, 15:20

А если две линии соприкасаются концами - с какой тогда объединять?
Spatial is now, more than ever, just another column- The Geometry Column.

Алексей Борисов
Активный участник
Сообщения: 135
Зарегистрирован: 02 авг 2014, 18:29
Репутация: 21
Откуда: Москва

Re: OpenLayers 3 | Продолжить рисование линии

Сообщение Алексей Борисов » 28 авг 2017, 11:27

Denis Rykov, что именно вы имеете в виду? Ситуацию, когда обе линии соприкасаются обоими концами, когда они имеют общие начало и конец, образуют замкнутую структуру и больше похожи на полигон?
Хм... Ну в этом случае пусть будет лайнстринг, координаты конечной точки которого совпадают с координатами начальной точки.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя