@@ -20,6 +20,7 @@ import com.mapbox.maps.Style.Companion.MAPBOX_STREETS
2020import com.mapbox.maps.plugin.LocationPuck2D
2121import com.mapbox.maps.plugin.animation.camera
2222import com.mapbox.maps.plugin.gestures.gestures
23+ import com.mapbox.maps.plugin.locationcomponent.OnIndicatorPositionChangedListener
2324import com.mapbox.maps.plugin.locationcomponent.location
2425import com.mapbox.navigation.base.TimeFormat
2526import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions
@@ -141,6 +142,13 @@ class MapboxNavigationActivity : AppCompatActivity() {
141142 private lateinit var routeArrowView: MapboxRouteArrowView
142143 private val routeArrowAPI: MapboxRouteArrowApi = MapboxRouteArrowApi ()
143144
145+ private val locationComponent by lazy {
146+ binding.mapView.location.apply {
147+ setLocationProvider(navigationLocationProvider)
148+ enabled = true
149+ }
150+ }
151+
144152 /* ----- Voice instruction callbacks ----- */
145153 private val voiceInstructionsObserver =
146154 VoiceInstructionsObserver { voiceInstructions ->
@@ -388,6 +396,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
388396 // initialize route line
389397 val mapboxRouteLineOptions = MapboxRouteLineOptions .Builder (this )
390398 .withRouteLineBelowLayerId(" road-label" )
399+ .withVanishingRouteLineEnabled(true )
391400 .build()
392401 routeLineAPI = MapboxRouteLineApi (mapboxRouteLineOptions)
393402 routeLineView = MapboxRouteLineView (mapboxRouteLineOptions)
@@ -434,6 +443,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
434443
435444 override fun onStart () {
436445 super .onStart()
446+ locationComponent.addOnIndicatorPositionChangedListener(onPositionChangedListener)
437447 mapboxNavigation.registerRoutesObserver(routesObserver)
438448 mapboxNavigation.registerNavigationSessionStateObserver(navigationSessionStateObserver)
439449 mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
@@ -443,6 +453,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
443453
444454 override fun onStop () {
445455 super .onStop()
456+ locationComponent.removeOnIndicatorPositionChangedListener(onPositionChangedListener)
446457 mapboxNavigation.unregisterRoutesObserver(routesObserver)
447458 mapboxNavigation.unregisterNavigationSessionStateObserver(navigationSessionStateObserver)
448459 mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
@@ -469,7 +480,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
469480 RouteOptions .builder()
470481 .applyDefaultNavigationOptions()
471482 .applyLanguageAndVoiceUnitOptions(this )
472- .coordinatesList(listOf (origin, destination))
483+ .coordinatesList(listOf (Point .fromLngLat( - 122.37033971197376 , 45.5794559098664 ), Point .fromLngLat( - 122.37006184362927 , 45.57944922334681 ))) // fixme
473484 .layersList(listOf (mapboxNavigation.getZLevel(), null ))
474485 .build(),
475486 object : NavigationRouterCallback {
@@ -527,4 +538,12 @@ class MapboxNavigationActivity : AppCompatActivity() {
527538 private companion object {
528539 private const val LOG_CATEGORY = " MapboxNavigationActivity"
529540 }
541+
542+ private val onPositionChangedListener = OnIndicatorPositionChangedListener { point ->
543+ val result = routeLineAPI.updateTraveledRouteLine(point)
544+ mapboxMap.getStyle()?.apply {
545+ // Render the result to update the map.
546+ routeLineView.renderRouteLineUpdate(this , result)
547+ }
548+ }
530549}
0 commit comments