From 027ef277583d83a5c0f044e100e8d0cc6fd0cdbd Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Fri, 24 Mar 2023 16:56:22 +0100 Subject: [PATCH] Showing confirmation overlay after adding points to the map --- .../geocaching/ui/overlay/AddMarkerOverlay.kt | 10 +++- .../ui/overlay/NewRoadtripOverlay.kt | 48 +++++++++++++++++++ app/src/main/res/drawable/check.xml | 5 ++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/NewRoadtripOverlay.kt create mode 100644 app/src/main/res/drawable/check.xml diff --git a/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/AddMarkerOverlay.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/AddMarkerOverlay.kt index 5f76388..426cb06 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/AddMarkerOverlay.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/AddMarkerOverlay.kt @@ -30,6 +30,7 @@ class AddMarkerOverlay(val roadManager: RoadManager) : Overlay() { marker.title = "Step " + locations.size mapView.overlays.add(marker) computeRoad(mapView) + addNewRoadtripOverlay(mapView); } return true; } @@ -41,7 +42,6 @@ class AddMarkerOverlay(val roadManager: RoadManager) : Overlay() { val road = roadManager.getRoad(ArrayList(locations)) withContext(Dispatchers.Main) { roadOverlay = RoadManager.buildRoadOverlay(road) - roadOverlay.width=10.0f; mapView.overlays.add(roadOverlay) mapView.invalidate() } @@ -49,7 +49,13 @@ class AddMarkerOverlay(val roadManager: RoadManager) : Overlay() { } } - + fun addNewRoadtripOverlay(mapView: MapView){ + if (locations.size > 1) { + mapView.overlays.add(NewRoadtripOverlay()) + }else{ + mapView.overlays.remove(mapView.overlays.find { it is NewRoadtripOverlay}) + } + } diff --git a/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/NewRoadtripOverlay.kt b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/NewRoadtripOverlay.kt new file mode 100644 index 0000000..bf04d08 --- /dev/null +++ b/app/src/main/java/uca/baptistearthur/geocaching/ui/overlay/NewRoadtripOverlay.kt @@ -0,0 +1,48 @@ +package uca.baptistearthur.geocaching.ui.overlay + +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.RectF +import androidx.core.content.ContextCompat + +import org.osmdroid.views.MapView +import org.osmdroid.views.overlay.Overlay +import uca.baptistearthur.geocaching.R + + +class NewRoadtripOverlay() : Overlay() { + + private var circleRectF=RectF() + + override fun draw(canvas: Canvas, mapView: MapView, shadow: Boolean) { + + val circleSize = 300f + val circlePadding = 20f + val circleX = canvas.width - circleSize - circlePadding + val circleY = canvas.height - circleSize - circlePadding + circleRectF=RectF(circleX, circleY, circleX + circleSize, circleY + circleSize) + + val paint = Paint().apply { + color = Color.WHITE + style = Paint.Style.FILL + } + + canvas.drawCircle( + circleSize / 2 + circlePadding, + circleY + circleSize / 2, + circleSize / 2, + paint + ) + + val iconSize = 180 + val icon = ContextCompat.getDrawable(mapView.context, R.drawable.check) + + val iconX = (circleSize / 2 - iconSize / 2 + circlePadding).toInt() + val iconY = (circleY + circleSize / 2 - iconSize / 2).toInt() + + icon?.setBounds(iconX, iconY, iconX + iconSize, iconY + iconSize) + icon?.draw(canvas) + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/check.xml b/app/src/main/res/drawable/check.xml new file mode 100644 index 0000000..cf143d4 --- /dev/null +++ b/app/src/main/res/drawable/check.xml @@ -0,0 +1,5 @@ + + +