Modificar los puntos de inicio / finalización de un LineString y mantener la conectividad en OpenLayers

8

Estoy desarrollando una aplicación donde el usuario puede ver y editar una cuadrícula de una ciudad. Las calles se presentan como entidades en una capa vectorial, y el usuario debe poder modificar los elementos (tanto los atributos como la geometría, que es LineString) de la entidad. La edición de una geometría se limita a arrastrar los puntos finales de LineString, al menos por ahora.

El truco es que los nuevos puntos finales deben cruzarse con la geometría actual de la entidad, de modo que el usuario no pueda arrastrar un camino para comenzar desde fuera de la cuadrícula de la calle. Además, la modificación de la geometría debería afectar a las geometrías vecinas, si existen. Es decir, si otro camino comienza donde termina uno, ambos deben cambiar su punto de inicio / finalización.

No creo que OpenLayers admita esto de forma inmediata, ¿cómo debo comenzar a implementar esto?

mrLite
fuente
¿trataste de usar snapping con capas abiertas?
Aragón
Creo que uno solo puede recurrir a otros elementos, no a "sí mismo". Sin embargo, supongo que sería posible clonar temporalmente la entidad en otra capa vectorial, usar la función de ajuste para ajustar el clon a su entidad original y luego volver a clonar la entidad modificada a la capa original. Sin embargo, eso no resolvería el problema de modificar la geometría vecina.
mrLite
Es una buena pregunta. Voto a favor.
Magno C
Solía ​​usar un editor propietario codificado personalizado que podía hacer esto y utilizaba bibliotecas de código abierto, que desafortunadamente no conozco. Sin embargo, fue muy útil, utilizado por una compañía llamada GDT
lewis

Respuestas: