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

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
lenny314156
Интересующийся
Сообщения: 35
Зарегистрирован: 27 июл 2013, 21:47
Репутация: 6

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

Сообщение lenny314156 » 20 сен 2015, 23:36

Здравствуйте.

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

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

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

Vladimir_R
Активный участник
Сообщения: 145
Зарегистрирован: 14 апр 2010, 14:11
Репутация: 44
Откуда: Екатеринбург

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

Сообщение Vladimir_R » 21 сен 2015, 11:51

Добрый день!

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

lenny314156
Интересующийся
Сообщения: 35
Зарегистрирован: 27 июл 2013, 21:47
Репутация: 6

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

Сообщение lenny314156 » 21 сен 2015, 12:29

Добрый день.

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

Vladimir_R
Активный участник
Сообщения: 145
Зарегистрирован: 14 апр 2010, 14:11
Репутация: 44
Откуда: Екатеринбург

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

Сообщение Vladimir_R » 21 сен 2015, 16:27

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

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

lenny314156
Интересующийся
Сообщения: 35
Зарегистрирован: 27 июл 2013, 21:47
Репутация: 6

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

Сообщение lenny314156 » 29 сен 2015, 11:24

Нашел решение.

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

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

Ответить

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

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

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