Ändern der Start- / Endpunkte eines LineString und Beibehalten der Konnektivität in OpenLayers


8

Ich entwickle eine Anwendung, mit der der Benutzer ein Straßenraster einer Stadt anzeigen und bearbeiten kann. Die Straßen werden als Features auf einer Vektorebene dargestellt, und der Benutzer muss in der Lage sein, die Elemente (sowohl die Attribute als auch die Geometrie - das ist LineString - des Features) zu ändern. Die Bearbeitung einer Geometrie beschränkt sich zumindest vorerst auf das Ziehen der Endpunkte des LineString.

Der Trick besteht darin, dass sich die neuen Endpunkte mit der aktuellen Geometrie des Features schneiden müssen, damit der Benutzer keine Straße ziehen kann, um von außerhalb des Straßenrasters zu beginnen. Das Ändern der Geometrie sollte sich gegebenenfalls auch auf die benachbarten Geometrien auswirken. Das heißt, wenn eine andere Straße dort beginnt, wo eine endet, sollte bei beiden der Start- / Endpunkt geändert werden.

Ich nehme nicht an, dass OpenLayers dies sofort unterstützt. Wie soll ich damit beginnen?


Haben Sie versucht, mit Openlayern zu schnappen?
Aragon

Ich glaube, man kann nur an anderen Elementen festhalten, nicht an "sich selbst". Ich nehme jedoch an, dass es möglich ist, das Feature vorübergehend auf eine andere Vektorebene zu klonen, die Fangfunktion zu verwenden, um den Klon an seinem ursprünglichen Feature zu fangen und das geänderte Feature dann wieder auf die ursprüngliche Ebene zu klonen. Das würde das Problem mit der Änderung der benachbarten Geometrie jedoch nicht lösen.
MrLite

Das ist eine gute Frage. Upvote.
Magno C

Früher habe ich einen benutzerdefinierten codierten proprietären Editor verwendet, der dies konnte, und er hat Open-Source-Bibliotheken verwendet, die ich leider nicht kenne. Es war jedoch sehr praktisch und wurde von einer Firma namens GDT
Lewis

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.