Adding AddMarkerOverlay, which allows the user to put markers on the map when double tapping

pull/7/head
Arthur VALIN 2 years ago
parent 7e03969c04
commit debb6ca2a6

@ -4,11 +4,13 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_A"/>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"
tools:ignore="ScopedStorage" />
<application <application
android:allowBackup="true" android:allowBackup="true"

@ -19,17 +19,23 @@ import android.location.LocationListener
import android.util.Log import android.util.Log
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import org.osmdroid.config.IConfigurationProvider
import org.osmdroid.library.BuildConfig
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.tileprovider.util.StorageUtils.getStorage
import org.osmdroid.views.overlay.compass.CompassOverlay import org.osmdroid.views.overlay.compass.CompassOverlay
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
import uca.baptistearthur.geocaching.R import uca.baptistearthur.geocaching.R
import uca.baptistearthur.geocaching.ui.overlay.AddMarkerOverlay
import uca.baptistearthur.geocaching.ui.overlay.RecenterOverlay import uca.baptistearthur.geocaching.ui.overlay.RecenterOverlay
class Map : Fragment() { class Map : Fragment() {
private lateinit var map : MapView private lateinit var map : MapView
private lateinit var spinner: ProgressBar; private lateinit var spinner: ProgressBar
private lateinit var locationManager: LocationManager; private lateinit var locationManager: LocationManager
val defaultPoint = GeoPoint(48.8583, 2.2944) val defaultPoint = GeoPoint(48.8583, 2.2944)
var isMapCentered = false; var isMapCentered = false;
val locationListener = object : LocationListener { val locationListener = object : LocationListener {
@ -48,7 +54,7 @@ class Map : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Configuration.getInstance().userAgentValue = "Geocaching" Configuration.getInstance().userAgentValue = "RoadTrip"
} }
@ -58,6 +64,7 @@ class Map : Fragment() {
private fun configureMap(view: View){ private fun configureMap(view: View){
Log.d("GeoMap", "MAP CONFIGURE") Log.d("GeoMap", "MAP CONFIGURE")
map = view.findViewById(R.id.mapView) map = view.findViewById(R.id.mapView)
map.setTileSource(TileSourceFactory.MAPNIK);
spinner = view.findViewById(R.id.mapLoading); spinner = view.findViewById(R.id.mapLoading);
spinner.visibility=View.VISIBLE; spinner.visibility=View.VISIBLE;
map.minZoomLevel = 10.0 map.minZoomLevel = 10.0
@ -83,6 +90,9 @@ class Map : Fragment() {
recenter.enableMyLocation() recenter.enableMyLocation()
map.overlays.add(recenter); map.overlays.add(recenter);
val addMarker = AddMarkerOverlay()
map.overlays.add(addMarker);
} }
override fun onCreateView( override fun onCreateView(

@ -0,0 +1,18 @@
package uca.baptistearthur.geocaching.ui.overlay
import android.view.MotionEvent
import org.osmdroid.util.GeoPoint
import org.osmdroid.views.MapView
import org.osmdroid.views.overlay.Marker
class PlaceMarker(val mapView: MapView, val locations: MutableSet<GeoPoint>) : Marker(mapView) {
override fun onLongPress(e: MotionEvent?, mapView: MapView?): Boolean {
if(this.hitTest(e, mapView)) {
locations.remove(this.position)
this.closeInfoWindow()
mapView?.overlays?.remove(this)
}
return true
}
}

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins { plugins {
id 'com.android.application' version '7.3.0' apply false id 'com.android.application' version '7.4.1' apply false
id 'com.android.library' version '7.3.0' apply false id 'com.android.library' version '7.4.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
} }

@ -1,6 +1,6 @@
#Fri Mar 03 14:28:35 CET 2023 #Fri Mar 03 14:28:35 CET 2023
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

Loading…
Cancel
Save