leaflet. как привязать линии к маркеру при перемещении?
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 27 июл 2013, 21:47
- Репутация: 6
leaflet. как привязать линии к маркеру при перемещении?
Здравствуйте.
Поясню суть вопроса из заголовка. Есть два слоя - маркеры и полилинии. Т.к. линии обозначают связи между некоторыми маркерами - начало и конец линий совпадают с координатами соответствующих маркеров.
Сейчас редактирование реализовано наподобие того, как это происходит в QGIS - перемещается маркер, обновляются координаты маркера -> триггеры в БД меняют координаты у всех зависимых линий -> апдейт карты -> и только тут перерисовка линий с измененными координатами.
Что хочется - чтобы при перемещении маркера все зависимые линии в режиме реального времени тут же перерисовывались (как бы тянулись вслед за маркером). Т.е. как если редактируешь линию, перемещая точку в середине - остальные части линии тянутся вслед за перемещаемой точкой). Ну и в идеале, поскольку концы линий должы перемещаться только вместе с маркером - может, есть способ запретить редактирование (перемещение) конечных точек у линий? Может, кто реализовывал такое?
Поясню суть вопроса из заголовка. Есть два слоя - маркеры и полилинии. Т.к. линии обозначают связи между некоторыми маркерами - начало и конец линий совпадают с координатами соответствующих маркеров.
Сейчас редактирование реализовано наподобие того, как это происходит в QGIS - перемещается маркер, обновляются координаты маркера -> триггеры в БД меняют координаты у всех зависимых линий -> апдейт карты -> и только тут перерисовка линий с измененными координатами.
Что хочется - чтобы при перемещении маркера все зависимые линии в режиме реального времени тут же перерисовывались (как бы тянулись вслед за маркером). Т.е. как если редактируешь линию, перемещая точку в середине - остальные части линии тянутся вслед за перемещаемой точкой). Ну и в идеале, поскольку концы линий должы перемещаться только вместе с маркером - может, есть способ запретить редактирование (перемещение) конечных точек у линий? Может, кто реализовывал такое?
Последний раз редактировалось lenny314156 29 сен 2015, 11:48, всего редактировалось 1 раз.
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: leaflet. как привязать линии к маркеру при перемещении?
Добрый день!
Слой маркеров состоит только из концов линейных объектов?
Если так, то лучше редактировать линии, а маркерный слой обновлять. Тогда не придется "запрещать редактирование конечных точек".
Слой маркеров состоит только из концов линейных объектов?
Если так, то лучше редактировать линии, а маркерный слой обновлять. Тогда не придется "запрещать редактирование конечных точек".
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 27 июл 2013, 21:47
- Репутация: 6
Re: leaflet. как привязать линии к маркеру при перемещении?
Добрый день.
Маркеры - это основные объекты карты. В зависимости от типа, могут как не иметь связей вообще, так и иметь их в количестве до 20 штук. Соответственно, под маркером могут сходиться несколько линий, и удобнее переместить один раз маркер, чем редактировать все линии.
Маркеры - это основные объекты карты. В зависимости от типа, могут как не иметь связей вообще, так и иметь их в количестве до 20 штук. Соответственно, под маркером могут сходиться несколько линий, и удобнее переместить один раз маркер, чем редактировать все линии.
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: leaflet. как привязать линии к маркеру при перемещении?
Есть плагин для контроля топологии, но он не поддерживает точечные объекты. Возможно Вам это поможет каким-то образом.
P.S. Задача интересная, сообщите сообществу когда найдете решение.
P.S. Задача интересная, сообщите сообществу когда найдете решение.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 27 июл 2013, 21:47
- Репутация: 6
Re: leaflet. как привязать линии к маркеру при перемещении?
Нашел решение.
Простой пример можно посмотреть тут. Код местами корявый, ибо JS я знаю постольку-поскольку. Редактирование активируется правым кликом на маркер.
P.S. Был еще вопрос, как запретить перемещение крайних точек линии, если они должны перемещаться только вместе с маркером (использую leaflet.editable, редактировать можно и геометрию самой линии). Вопрос решил установкой свойств opacity:0 и draggable:false для крайних маркеров.
Простой пример можно посмотреть тут. Код местами корявый, ибо JS я знаю постольку-поскольку. Редактирование активируется правым кликом на маркер.
P.S. Был еще вопрос, как запретить перемещение крайних точек линии, если они должны перемещаться только вместе с маркером (использую leaflet.editable, редактировать можно и геометрию самой линии). Вопрос решил установкой свойств opacity:0 и draggable:false для крайних маркеров.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей