Страница 1 из 1

leaflet. как привязать линии к маркеру при перемещении?

Добавлено: 20 сен 2015, 23:36
lenny314156
Здравствуйте.

Поясню суть вопроса из заголовка. Есть два слоя - маркеры и полилинии. Т.к. линии обозначают связи между некоторыми маркерами - начало и конец линий совпадают с координатами соответствующих маркеров.

Сейчас редактирование реализовано наподобие того, как это происходит в QGIS - перемещается маркер, обновляются координаты маркера -> триггеры в БД меняют координаты у всех зависимых линий -> апдейт карты -> и только тут перерисовка линий с измененными координатами.

Что хочется - чтобы при перемещении маркера все зависимые линии в режиме реального времени тут же перерисовывались (как бы тянулись вслед за маркером). Т.е. как если редактируешь линию, перемещая точку в середине - остальные части линии тянутся вслед за перемещаемой точкой). Ну и в идеале, поскольку концы линий должы перемещаться только вместе с маркером - может, есть способ запретить редактирование (перемещение) конечных точек у линий? Может, кто реализовывал такое?

Re: leaflet. как привязать линии к маркеру при перемещении?

Добавлено: 21 сен 2015, 11:51
Vladimir_R
Добрый день!

Слой маркеров состоит только из концов линейных объектов?
Если так, то лучше редактировать линии, а маркерный слой обновлять. Тогда не придется "запрещать редактирование конечных точек".

Re: leaflet. как привязать линии к маркеру при перемещении?

Добавлено: 21 сен 2015, 12:29
lenny314156
Добрый день.

Маркеры - это основные объекты карты. В зависимости от типа, могут как не иметь связей вообще, так и иметь их в количестве до 20 штук. Соответственно, под маркером могут сходиться несколько линий, и удобнее переместить один раз маркер, чем редактировать все линии.

Re: leaflet. как привязать линии к маркеру при перемещении?

Добавлено: 21 сен 2015, 16:27
Vladimir_R
Есть плагин для контроля топологии, но он не поддерживает точечные объекты. Возможно Вам это поможет каким-то образом.

P.S. Задача интересная, сообщите сообществу когда найдете решение.

Re: leaflet. как привязать линии к маркеру при перемещении?

Добавлено: 29 сен 2015, 11:24
lenny314156
Нашел решение.

Простой пример можно посмотреть тут. Код местами корявый, ибо JS я знаю постольку-поскольку. Редактирование активируется правым кликом на маркер.

P.S. Был еще вопрос, как запретить перемещение крайних точек линии, если они должны перемещаться только вместе с маркером (использую leaflet.editable, редактировать можно и геометрию самой линии). Вопрос решил установкой свойств opacity:0 и draggable:false для крайних маркеров.