From 756b760d5c9f734f25bae0230d46f1e67e2ce81c Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Mon, 15 Jul 2024 01:05:50 +0200 Subject: [PATCH] feat: Map controller basics --- .../main/java/eu/ztsh/garmin/MainActivity.kt | 5 +++ .../java/eu/ztsh/garmin/mapbox/MapControl.kt | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 app/src/main/java/eu/ztsh/garmin/mapbox/MapControl.kt diff --git a/app/src/main/java/eu/ztsh/garmin/MainActivity.kt b/app/src/main/java/eu/ztsh/garmin/MainActivity.kt index 5a41afa..c5f4911 100644 --- a/app/src/main/java/eu/ztsh/garmin/MainActivity.kt +++ b/app/src/main/java/eu/ztsh/garmin/MainActivity.kt @@ -20,6 +20,7 @@ import androidx.lifecycle.LifecycleOwner import com.mapbox.navigation.base.options.NavigationOptions import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp import eu.ztsh.garmin.databinding.ActivityMainBinding +import eu.ztsh.garmin.mapbox.MapControl import eu.ztsh.garmin.mapbox.NavigationObserver import eu.ztsh.garmin.util.PermissionsHelper import java.lang.ref.WeakReference @@ -30,6 +31,7 @@ class MainActivity : AppCompatActivity() { lateinit var garmin: Garmin private lateinit var binding: ActivityMainBinding + private lateinit var mapControl: MapControl private val navigationObserver = NavigationObserver() val permissionsHelper = PermissionsHelper(WeakReference(this)) @@ -51,6 +53,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + binding.mapView permissionsHelper.checkPermissions { if (!MapboxNavigationApp.isSetup()) { MapboxNavigationApp.setup { @@ -60,6 +63,8 @@ class MainActivity : AppCompatActivity() { } } MapboxNavigationApp.current()?.startTripSession() + mapControl = MapControl(binding.mapView, resources) + mapControl.follow() } bluetoothInit() } diff --git a/app/src/main/java/eu/ztsh/garmin/mapbox/MapControl.kt b/app/src/main/java/eu/ztsh/garmin/mapbox/MapControl.kt new file mode 100644 index 0000000..4b919b6 --- /dev/null +++ b/app/src/main/java/eu/ztsh/garmin/mapbox/MapControl.kt @@ -0,0 +1,32 @@ +package eu.ztsh.garmin.mapbox + +import android.content.res.Resources +import android.util.Log +import com.mapbox.maps.EdgeInsets +import com.mapbox.maps.MapView +import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateBearing +import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateOptions +import com.mapbox.maps.plugin.viewport.state.FollowPuckViewportState +import com.mapbox.maps.plugin.viewport.viewport + +class MapControl(private val mapView: MapView, private val resources: Resources) { + + fun follow() { + val viewportPlugin = mapView.viewport + // transition to followPuckViewportState with default transition + val followPuckViewportState: FollowPuckViewportState = viewportPlugin.makeFollowPuckViewportState( + FollowPuckViewportStateOptions.Builder() +// .bearing(FollowPuckViewportStateBearing.Constant(0.0)) + .padding(EdgeInsets(200.0 * resources.displayMetrics.density, 0.0, 0.0, 0.0)) + .build() + ) + val immediateTransition = viewportPlugin.makeImmediateViewportTransition() + viewportPlugin.transitionTo(followPuckViewportState, immediateTransition) { success -> + Log.d(TAG, "follow: $success") + } + } + + companion object { + const val TAG = "MAPCTRL" + } +} \ No newline at end of file