diff --git a/app/build.gradle b/app/build.gradle
index e3c47db0..46c1aebe 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -174,11 +174,14 @@ dependencies {
googleAutomotiveImplementation 'androidx.car.app:app-automotive:1.2.0-rc01'
// AnyMaps
- def anyMapsVersion = '751daec281'
+ def anyMapsVersion = '3c67d7a1dc'
implementation "com.github.johan12345.AnyMaps:anymaps-base:$anyMapsVersion"
googleImplementation "com.github.johan12345.AnyMaps:anymaps-google:$anyMapsVersion"
googleImplementation 'com.google.android.gms:play-services-maps:18.0.2'
- implementation "com.github.johan12345.AnyMaps:anymaps-mapbox:$anyMapsVersion"
+ implementation("com.github.johan12345.AnyMaps:anymaps-mapbox:$anyMapsVersion") {
+ exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-accounts'
+ exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-telemetry'
+ }
// Google Places
implementation 'com.google.android.libraries.places:places:2.5.0'
diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
index 14f944ad..685719e6 100644
--- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
+++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
@@ -23,7 +23,10 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.PopupMenu
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
-import androidx.core.view.*
+import androidx.core.view.MenuCompat
+import androidx.core.view.doOnLayout
+import androidx.core.view.doOnNextLayout
+import androidx.core.view.updateLayoutParams
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
@@ -92,6 +95,28 @@ import net.vonforst.evmap.utils.checkFineLocationPermission
import net.vonforst.evmap.utils.distanceBetween
import net.vonforst.evmap.viewmodel.*
import java.io.IOException
+import kotlin.collections.List
+import kotlin.collections.Set
+import kotlin.collections.any
+import kotlin.collections.component1
+import kotlin.collections.component2
+import kotlin.collections.contains
+import kotlin.collections.emptyList
+import kotlin.collections.filterIsInstance
+import kotlin.collections.find
+import kotlin.collections.forEach
+import kotlin.collections.getOrNull
+import kotlin.collections.isNotEmpty
+import kotlin.collections.iterator
+import kotlin.collections.listOf
+import kotlin.collections.map
+import kotlin.collections.mapNotNull
+import kotlin.collections.set
+import kotlin.collections.sortedBy
+import kotlin.collections.sortedByDescending
+import kotlin.collections.toList
+import kotlin.collections.toSet
+import kotlin.collections.toTypedArray
class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallback,
@@ -811,6 +836,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
animator = MarkerAnimator(chargerIconGenerator)
map.uiSettings.setTiltGesturesEnabled(false)
+ map.uiSettings.setRotateGesturesEnabled(prefs.mapRotateGesturesEnabled)
map.setIndoorEnabled(false)
map.uiSettings.setIndoorLevelPickerEnabled(false)
map.setOnCameraIdleListener {
diff --git a/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt
index 0604c76e..1eb29a14 100644
--- a/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt
+++ b/app/src/main/java/net/vonforst/evmap/storage/PreferenceDataSource.kt
@@ -29,6 +29,12 @@ class PreferenceDataSource(val context: Context) {
sp.edit().putBoolean("navigate_use_maps", value).apply()
}
+ var mapRotateGesturesEnabled: Boolean
+ get() = sp.getBoolean("map_rotate_gestures_enabled", true)
+ set(value) {
+ sp.edit().putBoolean("map_rotate_gestures_enabled", value).apply()
+ }
+
var lastGeReferenceDataUpdate: Instant
get() = Instant.ofEpochMilli(sp.getLong("last_ge_reference_data_update", 0L))
set(value) {
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 53692aa0..5bd3ae47 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -255,4 +255,7 @@
Android Auto
Schieflast erlauben
4.5 kW an AC-Stationen für Autos mit 1-phasigem Lader]]>
+ Kartenrotation erlauben
+ Karte kann mit Zweifingergeste rotiert werden
+ Karte bleibt fest nach Norden ausgerichtet
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index aa870078..7a9324f2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -240,4 +240,7 @@
Android Auto
Enable unbalanced load
4.5 kW at AC stations for cars with single-phase charger]]>
+ Enable map rotation
+ Map can be rotated with two-finger gesture
+ Map will be fixed to north-up
diff --git a/app/src/main/res/xml/settings_ui.xml b/app/src/main/res/xml/settings_ui.xml
index 69dd7a1b..153fe5a7 100644
--- a/app/src/main/res/xml/settings_ui.xml
+++ b/app/src/main/res/xml/settings_ui.xml
@@ -15,6 +15,12 @@
android:entryValues="@array/pref_darkmode_values"
android:defaultValue="default"
android:summary="@string/pref_darkmode_summary" />
+