Closed Rastopapola closed 3 weeks ago
Die ersten beiden Umsetzungen wären statisch, d.h. sie werden initial dem Kartenclient übergeben. Das kann in folgenden Fällen nachteilig sein:
Anstatt die nicht-editierbare Geometrie zu hinterlegen, kann eine url hinterlegt werden, welche mit den Geometrien (geojson) antwortet, die sich im übergebenen Kartenausschnitt befinden. Diese url (ggf. mehrere) könnten bei jedem Verschieben des Kartenbildes angefragt werden.
<main id="container" data-editable="true" data-readOnlyGeometryURL="https://example.org/context1;https://example.org/context2" style="position: relative; width: 100%; height: 100%;">
</main>
Mit ;
können einzelne URLs separiert werden. Ein möglicher Request könnte dann wie folgt aussehen:
https://example.org/context1?bbox=x1,x2,y1,y2
Wo x1, x2, y1 und y2 die Bounding box des aktuellen Kartenausschnitts aufspannen.
Eine Kombination aus Möglichkeit 2 und Möglichkeit 3 ist ebenso denkbar: Statische Initialisierung mit einfachen Geometrien, komplexe Geometrien lediglich über URLs abrufbar (sofern angegeben).
Feedback ist sehr erwünscht
Added in latest LANIS Update.
Features from the GeoJSON inside the storage input value can now have "properties": { "editable": true }
to define into which layer they are imported (editable or not).
Example:
<input type="hidden" id="netgis-storage" name="output" value='{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385947.1733847084,5587420.133948028],[385924.7215815909,5587575.524501444],[385983.8340881849,5587720.975589848],[386108.3204437366,5587816.649279207],[386128.61293018516,5587825.002716699],[386287.15210903366,5587844.293282578],[386433.12464682607,5587779.495015839],[386525.16063342174,5587648.972319218],[386533.51636313583,5587625.702029063],[386546.62565086246,5587472.317275605],[386481.9349259469,5587332.625306874],[386356.47850408487,5587243.409712766],[386337.3796933098,5587236.249623489],[386187.71257841075,5587220.454999909],[386049.20810348407,5587279.329662044],[385956.72279009596,5587398.057006087],[385947.1733847084,5587420.133948028]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[386993.0181936734,5587227.7525485065],[386633.3370473852,5587978.680763736],[386923.60604263534,5588546.60966601],[387617.727553016,5588420.403243283],[387642.9683352116,5587934.508515782],[387232.80562453216,5588029.163332827],[387333.7687533148,5587549.578926463],[387655.5887263095,5587530.647963054],[387377.9401221572,5586893.305528278],[386993.0181936734,5587227.7525485065]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385705.73830169474,5586685.064930778],[386551.3045052493,5587019.511951006],[386993.0181936734,5586697.685573051],[386658.57782958087,5586306.445662595],[385970.76651474915,5586173.928918731],[385705.73830169474,5586685.064930778]]]},"properties": { "editable": true } }],"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::25832"}},"area":1928455.8138341408}' />
Status quo
Geometrie kann initial mitgegeben werden, indem
<input>
Element entsprechend attributiert wird:Hier wird
value
mit einem geojson befüllt, bspw.:Die übergebene Geometrie wird als die Geometrie des Kartenclients interpretiert und im Layer
Zeichnung
zur Bearbeitung verwendet.Es ist nicht möglich weitere nicht bearbeitbare Geometrien mitzugeben, die angezeigt (und zum Einrasten genutzt werden können) aber nicht verändert werden können.
Enhancement (Möglichkeit 1)
Die Gruppe
Zeichnung
enthält aktuell nur einen gleichnamigen Layer:Stattdessen soll es einen Layer
Bearbeitbar
undNicht bearbeitbar
geben. WobeiBearbeitbar
von der Funktion her identisch mit ehemalsZeichnung
sein soll.Das an den Client übergebene Geojson soll durch folgende Attribute erweitert werden:
isEditable
(bool) --> Fallstrue
, wird Geometrie in LayerBearbeitbar
gelegt. Fallsfalse
oder nicht definiert in LayerNicht bearbeitbar
title
(str) --> Enthält einen optionalen Titel der Geometrie, welcher direkt über der Flächengröße in der Karte angezeigt werden kann. Wenn Attribut nicht existiert, soll nur die Flächengröße gerendert werdenDas neue Geojson könnte wie folgt aussehen:
Enhancement (Möglichkeit 2)
Um bearbeitbare und nicht-bearbeitbare Geometrien nicht miteinander zu vermischen (beide über
value
übergeben), kann alternativ die nicht bearbeitbare Geometrie über das<main>
Element hinzugefügt werden:In diesem Fall ist das Attribut
isEditable
im GeoJson nicht notwendig. Funktionsweise fürtitle
bleibt bestehen.Rückmeldung und Diskussion zu den beiden Möglichkeiten ist erwünscht.
Snapping
Die nicht bearbeitbare Geometrie soll wie eine andere Geometrie/ein WFS auch für u.a. Snapping verwendbar sein.
Config.json
Das
styles
Element wird um einen weiteren Style für nicht editierbare, initiale Geometrien erweitert (bspw.nonEditLayer
). Dieser Style soll von den inNicht bearbeitbar
befindlichen Geometrien genutzt werden:Bsp: