Konfiguration

Editierfunktionen zu einer App hinzufügen

Die Auslieferung enthält eine Beispiel-App, die den Einsatz der Editierfunktionen zeigt.

Um die Editierfunktionen zu einer App hinzuzufügen, fügen Sie zunächst das Bundle advanced-editing zu Ihrer App hinzu. Ergänzen Sie außerdem die Kartenlayer, die mit map.apps Advanced Editing bearbeitet werden sollen.

Editierbare Kartenlayer zur App hinzufügen

Fügen Sie die Kartenlayer, die mit map.apps Advanced Editing bearbeitbar sein sollen, zur App hinzu. Details hierzu sind in der map.apps Dokumentation auf der Seite Karteninhalt beschrieben.

Das folgende Beispiel zeigt die möglichen Konfigurationen, die an einem Layer vorgenommen werden können. Details sind in der darauffolgenden Tabelle beschrieben.

{
    "id": "mylayer",
    "type": "AGS_FEATURE",
    "url": ".../FeatureServer/0",
    "editingEnabled": true,
    "advancedEditing": {
        "allowSnapping": true,
        "allowGeometryEditing": true,
        "allowAttributeEditing": true,
        "allowAttachmentEditing": true,
        "allowAdd": true,
        "allowDelete": false,
        "allowUpdate": true
    }
}
Name Beschreibung

editingEnabled

Um einen editierbaren Layer zwar in der App zu nutzen, aber nicht zum Editieren anzubieten, setzen Sie die Option editingEnabled auf false.

advancedEditing

> allowSnapping

Standardmäßig werden alle Layer, auf denen ein Fangen (Snapping) möglich ist, fürs Snapping genutzt. Um einen Layer vom Snapping auszuschließen, setzen Sie allowSnapping auf false.

> allowGeometryEditing

Legt fest, ob der Reiter Geometrie angezeigt wird.

> allowAttributeEditing

Legt fest, ob der Reiter Attribute angezeigt wird.

> allowAttachmentEditing

Legt fest, ob der Reiter Datei-Anhänge angezeigt wird.

> allowAdd

Legt fest, ob neue Objekte in diesem Layer erstellt werden können. Diese Einstellung greift nur, wenn editingEnabled auf true steht.

> allowUpdate

Legt fest, ob bestehende Objekte dieses Layers bearbeitet werden können. Diese Einstellung greift nur, wenn editingEnabled auf true steht.

> allowDelete

Legt fest, ob bestehende Objekte aus diesem Layer gelöscht werden können. Diese Einstellung greift nur, wenn editingEnabled auf true steht.

Durch die Konfiguration von allowAdd, allowUpdate und allowDelete werden UI-Elemente ausgeblendet. Es erfolgt hiermit keine serverseitige Absicherung des Layers. D.h. über die REST-Schnittstelle des Layers könnten durch mutwilligen Zugriff die definierten Einschränkungen umgangen werden.
Die hier aufgeführten clientseitigen Einschränkungen können nur dann sinnvoll angewendet werden, wenn die jeweilige Operation am Layer serverseitig erlaubt ist. Eine serverseitige Einschränkung des Layers kann nicht durch die hier genannten Konfigurationen aufgehoben werden.

Editieraktionen mit den Editierwerkzeugen (Tools)

Für den Einstieg in einer Editiersitzung bietet map.apps Advanced Editing drei grundlegende Werkzeuge an. Fügen Sie die gewünschten Werkzeuge (map.apps Tools) zu einem Toolset in Ihrer App hinzu:

Funktion Werkzeug-ID

Neues Objekt erfassen

advancedEditingAddFeatureTool

Objekt bearbeiten

advancedEditingUpdateFeatureTool

Objekte zusammenführen

advancedEditingMergeFeaturesTool

Allgemeine Hinweise zur Konfiguration von Werkzeugen sind im Abschnitt Werkzeuge der map.apps Dokumentation beschrieben.

Editieraktion in Popups

Zusätzlich zu den oben beschriebenen Editierwerkzeugen kann die Editierung auch durch ein Werkzeug in einem Popup gestartet werden. Ergänzen Sie dazu die Eigenschaft "customActions": ["advanced-editing-edit-object"] in der Konfiguration des jeweiligen Kartenlayers wie in folgendem Beispiel:

{
    "map-init": {
        "Config": {
            "basemaps": [],
            "map": {
                "layers": [
                    {
                        "id": "status",
                        "url": "https://www.example.com/arcgis/rest/services/mapapps/stoerung/FeatureServer/1",
                        "type": "AGS_FEATURE",
                        "popupTemplate": {
                            "customActions": [
                                "advanced-editing-edit-object"
                            ]
                        }
                    }
                ]
            }
        }
    }
}

Editieraktionen im Result Center

Sie können das Result Center zusammen mit map.apps Advanced Editing nutzen, um Objekte tabellarisch anzuzeigen und zu editieren oder zu löschen. Fügen Sie dazu das Bundle result-ui zu Ihrer App hinzu.

Objekt bearbeiten

Für Objekte auf editierbaren Layern kann eine Editiersitzung aus dem Result Center heraus gestartet werden. Klicken Sie dazu auf die Schaltfläche mit den drei Punkten in der Zeile des Objekts, das Sie bearbeiten möchten, und anschließend auf Editieren.

result ui action

Das Result Center wird minimiert, sobald die Editierung gestartet wird.

Mehrere Objekte in einem Schritt löschen

Um mehrere Objekte in einem Schritt zu löschen, gehen Sie so vor: 1. Selektieren Sie den Kartenausschnitt mit den gewünschten Objekten mithilfe der map.apps-Funktion Räumliche Auswahl (selection-ui Bundle). Daraufhin öffnet sich das Result Center. 2. Wählen Sie im Result Center die Objekte aus, die Sie löschen möchten. Klicken Sie dazu auf die vorangestellten Checkboxen. 3. Klicken Sie auf die Schaltfläche Objekte löschen.

Editierung in der Esri Feature Table

Die Esri Feature Table ist ein leistungsstarkes Werkzeug zur Verwaltung und Bearbeitung von Objekten in einer tabellarischen Ansicht. Sie eignet sich besonders für die effiziente Bearbeitung großer Datenmengen und das Durchführen von Massenoperationen. Die Feature Table bietet folgende zentrale Funktionen:

  • Anzeige aller Objekte eines Layers in einer Tabelle

  • Attributwerte direkt in der Tabelle bearbeiten (Inline Editing)

  • Einzelne oder mehrere Objekte gleichzeitig löschen

  • Anhänge anzeigen, hinzufügen und verwalten

  • Verwandte Datensätze anzeigen, hinzufügen, bearbeiten und löschen

  • Objekte nach Attributen sortieren

  • Tabellenspalten anpassen (anzeigen/ausblenden, Reihenfolge ändern)

  • Objekte als CSV-Datei exportieren

Die Esri Feature Table ist vollständig in map.apps Advanced Editing integriert und berücksichtigt die Bearbeitungsrechte und Konfiguration Ihrer Layer.

So fügen Sie die Esri Feature Table zu Ihrer App hinzu

  1. Fügen Sie das Bundle advanced-editing-feature-table zur App-Konfiguration hinzu.

  2. Stellen Sie sicher, dass die gewünschten Layer als editierbar konfiguriert sind (siehe Editierbare Kartenlayer zur App hinzufügen).

So öffnen Sie die Esri Feature Table

Im map.apps TOC
  1. Klicken Sie in Ihrer App auf die Schaltfläche Karteninhalt.

  2. Klicken Sie neben dem gewünschten Layer auf die Schaltfläche mit den drei Punkten (⋮).

  3. Wählen Sie im Menü Objekttabelle aus. Die Esri Feature Table öffnet sich für diesen Layer.

Im map.apps Result Center
  1. Selektieren Sie mindestens eine Zeile in der Result Center Tabelle.

  2. Klicken Sie auf die Schaltfläche Objekte editieren. Die ausgewählten Features werden nun in der Feature Table geöffnet.

Konfiguration und Best Practices

  • Detaillierte Konfigurationsmöglichkeiten finden Sie in der README.md des Bundles advanced-editing-feature-table.

  • Wenn Sie map.apps Advanced Editing in einer map.apps Umgebung vor Version 4.19.3 einsetzen, müssen Sie Ihre Content Security Policy anpassen, um Inline-Webfonts zuzulassen. Andernfalls werden einige Icons in der Feature Table nicht korrekt angezeigt. Ergänzen Sie dazu folgende Direktive in der Eigenschaft security.responseHeaders.apps:

security.responseHeaders.apps=Referrer-Policy:strict-origin-when-cross-origin,Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' https: http:; worker-src 'self' blob:; child-src 'self' blob:; connect-src 'self' https: http: wss: ws:; frame-src 'self' https: http:; img-src 'self' data: blob: https: http:; style-src 'self' 'unsafe-inline'; base-uri 'self'; font-src 'self' data:; form-action 'self'

Editieroberflächen anpassen

Wenn Sie ein Objekt mit Advanced Editing bearbeiten, öffnet sich ein Dialogfenster mit verschiedenen Registerkarten für Geometrie, Attribute und Anhänge. Sie können festlegen, welche dieser Registerkarten angezeigt werden sollen. Für die Konfiguration stehen folgende Parameter zur Verfügung:

Name Beschreibung

allowGeometryEditing

Legt fest, ob der Reiter Geometrie angezeigt wird.

allowAttributeEditing

Legt fest, ob der Reiter Attribute angezeigt wird.

allowAttachmentEditing

Legt fest, ob der Reiter Datei-Anhänge angezeigt wird.

Das folgende Beispiel zeigt die Konfiguration mit den Standardwerten. In diesem Beispiel werden für alle Kartenlayer alle drei Registerkarten angezeigt.

{
    "advanced-editing": {
        "Config": {
            "allowGeometryEditing": true,
            "allowAttributeEditing": true,
            "allowAttachmentEditing": true
        }
    }
}

Editieroberflächen für einzelne Layer anpassen

Es kann nicht nur global eingestellt werden, ob die Registerkarten für Geometrie, Attribute und Anhänge angezeigt werden. Dies ist auch für einzelne Layer möglich. Lesen Sie dafür den Abschnitt Kartenlayer für die Editierung zur App hinzufügen.

Dialog zur Geometrie-Editierung anpassen

Für die Konfiguration stehen folgende Parameter zur Verfügung:

Name Beschreibung

showSketching

Legt fest, ob die Werkzeuge zum Zeichnen von temporären Hilfsgeometrien angezeigt werden.

showSnappingControls

Legt fest, ob die Steuerung der Konstruktionshilfen angezeigt wird.

Das folgende Beispiel zeigt die Konfiguration mit den Standardwerten:

{
    "advanced-editing": {
        "Config": {
            "showSketching": true,
            "showSnappingControls": true
        }
    }
}

Dialog zur Attributeditierung anpassen

Um die Eingabemasken zur Attributeditierung anzupassen, können sog. FormTemplates genutzt werden, die am jeweiligen Feature Layer definiert werden. Dadurch kann eine Auswahl der angezeigten Attribute, deren Reihenfolge und Gruppierung festgelegt werden.

Das folgende Beispiel zeigt die Definition eines FormTemplate:

{
    "map-init": {
        "Config": {
            "basemaps": [],
            "map": {
                "layers": [
                    {
                        "id": "status",
                        "url": "https://www.example.com/arcgis/rest/services/mapapps/stoerung/FeatureServer/1",
                        "type": "AGS_FEATURE",
                        "title": "Layer with custom formTemplate",
                        "formTemplate": {
                            "title": "Bürger melden Störungen",
                            "description": "Helfen Sie dabei, unsere Stadt schön zu halten!",
                            "elements": [
                                {
                                    "type": "group",
                                    "label": "Art der Störung",
                                    "description": "Im ersten Schritt, geben Sie bitte die Art der Störung ein.",
                                    "elements": [
                                        {
                                            "type": "field",
                                            "fieldName": "art",
                                            "label": "Was möchten Sie melden?"
                                        }
                                    ]
                                },
                                {
                                    "type": "group",
                                    "label": "Details zur Erfassung",
                                    "description": "Geben Sie in diesem Schritt optional weitere Informationen ein.",
                                    "elements": [
                                        {
                                            "type": "field",
                                            "fieldName": "details",
                                            "label": "Details zur Meldung"
                                        },
                                        {
                                            "type": "field",
                                            "fieldName": "zeitpunkt",
                                            "label": "Zeitpunkt der Meldung"
                                        }
                                    ]
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }
}

Verhalten beim Editieren

Verschieben von Objekten verhindern

Um zu verhindern, dass Objekte beim Zeichnen von Geometrien verschoben werden können, wenden Sie die folgende Konfiguration an:

{
    "advanced-editing": {
        "Config": {
            "allowMovingObject": true
        }
    }
}

Eine Verschiebung einzelner Stützpunkte der Geometrie ist weiterhin möglich.

Fangen (Snapping)

Fangen auf Grundkarten erlauben

Um das Fangen (Snapping) auf Grundkarten zu ermöglichen, verwenden Sie die folgende Konfiguration:

{
    "advanced-editing": {
        "Config": {
            "allowBasemapSnapping": true
        }
    }
}

Fangtoleranz

Um den Mindestabstand zu einer Geometrie beim Objektfang zu ändern, verwenden Sie folgende Konfiguration:

{
    "advanced-editing": {
        "Config": {
            "snappingDistance": 6
        }
    }
}

Der Standardwert beträgt 6 Pixel.

Fangen rechter Winkel und paralleler Linien abschalten

Beim Zeichnen von Linien oder Flächen werden standardmäßig rechte Winkel und parallele Linien zu bereits gezeichneten Segmenten angezeigt und gefangen. Um dies zu verhindern, verwenden Sie folgende Konfiguration:

{
    "advanced-editing": {
        "Config": {
            "selfSnappingEnabled": false
        }
    }
}
Weitere Informationen zur Konfiguration können der Bundle-Dokumentation entnommen werden.