Untitled

 avatar
unknown
plain_text
6 days ago
2.6 kB
3
Indexable
var selectedUnit by remember { mutableStateOf("Meter") }
if (selectedGeometryType == "Area" && selectedUnit !in areaUnits) {
            selectedUnit = "Acre"
        }
        Text(text = "Select Unit", color = Color.Blue)
                        units.forEach { unit ->
                            Row(verticalAlignment = Alignment.CenterVertically) {
                                Checkbox(
                                    checked = selectedUnit == unit,
                                    onCheckedChange = {
                                        if (it) {
                                            selectedUnit = unit
                                            onUnitChange(unit)

                                            if (selectedGeometryType == "Distance" && areaUnits.contains(unit) &&linePoints.size >= 3){
                                                selectedGeometryType = "Area"
                                                convertToArea()
                                            }
                                            if (selectedGeometryType == "Distance") {
                                                updateDistanceUnits(unit)
                                            } else if (selectedGeometryType == "Area") {
                                                updateAreaUnits(unit)
                                            }
                                        }
                                    }
                                )
                                Text(text = unit, modifier = Modifier.padding(4.dp))
                            }
                        }
                    }
                }
            }
        }
    }

    private fun convertToArea() {
        if (linePoints.size < 3) return // Ensure at least 3 points exist before converting to area

        val polygon = Polygon(linePoints) // Convert the line points into a polygon
        val polygonGraphic = Graphic(polygon, polygonSymbol)

        // Remove previous distance-related graphics
        graphicsOverlay.graphics.clear()

        // Add the polygon graphic to the overlay
        graphicsOverlay.graphics.add(polygonGraphic)

        // Calculate the area of the polygon
        val areaValue = GeometryEngine.areaGeodetic(
            polygon,
            getAreaUnit(selectedUnit),
            GeodeticCurveType.Geodesic
        )

        area = areaValue
        areaText.value = formatMeasurementValue(areaValue, selectedUnit)
    }
Editor is loading...
Leave a Comment