status hinzugefügt
regelbasiertes styling architektur überarbeitet
This commit is contained in:
@@ -28,10 +28,13 @@ import com.arcgismaps.mapping.view.LocationDisplay
|
||||
import com.arcgismaps.mapping.view.ScreenCoordinate
|
||||
import com.arcgismaps.mapping.view.SingleTapConfirmedEvent
|
||||
import com.arcgismaps.toolkit.geoviewcompose.MapViewProxy
|
||||
import com.example.snapandsolve.view.createTypStatusRenderer
|
||||
import com.example.snapandsolve.viewmodel.findNearbyDamageOfSameType
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.ByteArrayOutputStream
|
||||
|
||||
|
||||
|
||||
class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
companion object {
|
||||
@@ -47,6 +50,8 @@ class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
val map: ArcGISMap = ArcGISMap(BasemapStyle.OpenOsmStyle).apply {
|
||||
initialViewpoint = Viewpoint(53.14, 8.20, 20000.0)
|
||||
}
|
||||
var duplicateDamages by mutableStateOf<List<DamageWithDistance>>(emptyList())
|
||||
private set
|
||||
var selectedOperation by mutableStateOf(FeatureOperationType.DEFAULT)
|
||||
var reopenReport by mutableStateOf(false)
|
||||
private set
|
||||
@@ -74,7 +79,7 @@ class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
init {
|
||||
tempOverlay.graphics.add(pointGraphic)
|
||||
viewModelScope.launch {
|
||||
serviceFeatureTable = ServiceFeatureTable("https://services9.arcgis.com/UVxdrlZq3S3gqt7w/arcgis/rest/services/si_StrassenSchaeden/FeatureServer/0")
|
||||
serviceFeatureTable = ServiceFeatureTable("https://services9.arcgis.com/UVxdrlZq3S3gqt7w/ArcGIS/rest/services/251120_StrassenSchaeden/FeatureServer/0")
|
||||
serviceFeatureTable.load().onSuccess {
|
||||
val typeDamageField = serviceFeatureTable.fields.firstOrNull { it.name == "Typ" }
|
||||
val attributeDomain = typeDamageField?.domain as? CodedValueDomain
|
||||
@@ -94,6 +99,7 @@ class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
println("DEBUG: Fehler beim Laden der Tabelle: ${it.message}")
|
||||
}
|
||||
featureLayer = FeatureLayer.createWithFeatureTable(serviceFeatureTable)
|
||||
featureLayer.renderer = createTypStatusRenderer()
|
||||
map.operationalLayers.add(featureLayer)
|
||||
|
||||
// ===== DEBUG: Felder nach dem Hinzufügen zur Map =====
|
||||
@@ -359,6 +365,7 @@ class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
geometry = draft.point
|
||||
attributes["Beschreibung"] = draft.beschreibung
|
||||
attributes["Typ"] = draft.typ
|
||||
attributes["status"] = draft.status
|
||||
}
|
||||
|
||||
// 2) Erst addFeature + applyEdits => Feature existiert am Server (ObjectID)
|
||||
@@ -405,6 +412,17 @@ class MapViewModel(application: Application) : AndroidViewModel(application) {
|
||||
selectedFeature = null
|
||||
featureLayer.clearSelection()
|
||||
}
|
||||
|
||||
suspend fun isDuplicateNearby(radiusMeters: Double): Boolean {
|
||||
val p = reportDraft.point ?: return false
|
||||
val t = reportDraft.typ
|
||||
duplicateDamages = findNearbyDamageOfSameType(serviceFeatureTable, p, t, radiusMeters)
|
||||
return duplicateDamages.isNotEmpty()
|
||||
}
|
||||
|
||||
fun clearDuplicateDamages() {
|
||||
duplicateDamages = emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
enum class FeatureOperationType(val operationName: String, val instruction: String) {
|
||||
@@ -419,7 +437,8 @@ data class ReportDraft(
|
||||
val beschreibung: String = "",
|
||||
val typ: String = "Schadenstyp wählen...",
|
||||
val photos: List<ImageBitmap> = emptyList(),
|
||||
val point: Point? = null
|
||||
val point: Point? = null,
|
||||
val status: String = "neu"
|
||||
) {
|
||||
val isValid: Boolean
|
||||
get() =
|
||||
|
||||
Reference in New Issue
Block a user