3.4 KiB
3.4 KiB
FeatureRatingSystem
Übersicht
Das FeatureRatingSystem enthält Komponenten zur detaillierten Anzeige von gemeldeten Straßenschäden. Es ermöglicht Nutzern, Informationen und Fotos zu einem Schaden einzusehen und diesen über ein Community-Rating-System zu validieren.
Methoden
1. FeatureInfoDialog
Composable Function
Ein modaler UI-Dialog, der zur Anzeige von Objektdaten eines ArcGISFeature dient.
Zweck
Visualisierung von Sachdaten (Attribute), das asynchrone Laden von Bildanhängen und die Bereitstellung einer Schnittstelle für Nutzerinteraktionen (Bewertungen).
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
feature |
ArcGISFeature? |
Das ArcGIS-Objekt, dessen Daten angezeigt werden. |
onDismiss |
() -> Unit |
Callback zum Schließen des Dialogs. |
onRate |
(ArcGISFeature, Boolean) -> Unit |
Callback, der ausgelöst wird, wenn ein Nutzer eine Bewertung abgibt. |
Interne Zustandsvariablen (State)
photoBitmaps(List<ImageBitmap>): Speichert die dekodierten Bilder, die aus den Feature-Attachments geladen wurden.isLoadingPhotos(Boolean): Statusindikator, der den Ladevorgang der Anhänge steuert.
Funktionsweise
- Initialisierung: Beim Start (
LaunchedEffect) wird geprüft, ob das Feature vollständig geladen ist. - Attachment-Download: Die Funktion ruft
fetchAttachments()auf. Für jeden Anhang werden die Rohdaten (fetchData) geladen. - Bildverarbeitung: Die Byte-Arrays werden mittels
BitmapFactorydekodiert und inImageBitmapkonvertiert, um sie in Compose anzuzeigen. - UI-Rendering: Die Attribute
TypundBeschreibungwerden zusammen mit den Bildern in einer scrollbarenCarddargestellt.
2. updateFeatureRating
Extension Function (suspend)
Eine Erweiterungsfunktion für das MapViewModel, die die Geschäftslogik für das Bewertungssystem kapselt.
Zweck
Persistente Aktualisierung des Community-Zählers eines Schadens in der ArcGIS Online Feature Layer Table.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
feature |
ArcGISFeature |
Das zu bewertende Feature-Objekt. |
isPositive |
Boolean |
true für eine Bestätigung (+1), false für eine Abmilderung (-1). |
context |
Context |
Erforderlich für die Anzeige von UI-Feedback (Toasts). |
Logik-Ablauf
- Wertberechnung: Extrahiert das Attribut
communitycounter. Erhöht oder verringert den Wert, wobei ein Minimum von0sichergestellt wird. - Lokale Aktualisierung: Setzt den neuen Wert im Attribut-Dictionary des Features und ruft
updateFeature()auf derServiceFeatureTableauf. - Remote-Synchronisation: Mittels
applyEdits()werden die Änderungen an den ArcGIS-Server gesendet. - Feedback: Informiert den Nutzer via
ToastundSnackBarüber den Erfolg oder Fehler der Operation.
Datenbank-Attribute (ArcGIS Schema)
Typ: Identifikator für die Schadensart.Beschreibung: Optionaler Freitext des Erstellers.communitycounter: Ganzzahliger Wert zur Speicherung der Community-Validierungen.
Fehlerbehandlung
- Bild-Dekodierung: Schlägt das Laden eines Bildes fehl, wird der Fehler geloggt, aber der Dialog bleibt funktionsfähig.
- Netzwerk-Synchronisation: Bei Fehlern während
applyEditswird eine Fehlermeldung ausgegeben, um den Nutzer über mangelnde Konnektivität zu informieren.