feat: Map controller basics

This commit is contained in:
Piotr Dec 2024-07-15 01:05:50 +02:00
parent c923f8825d
commit 756b760d5c
Signed by: stawros
GPG key ID: F89F27AD8F881A91
2 changed files with 37 additions and 0 deletions

View file

@ -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()
}

View file

@ -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"
}
}