@@ -5,13 +5,11 @@ import android.content.res.Configuration
55import android.content.res.Resources
66import android.location.Location
77import android.os.Bundle
8- import android.view.View
98import android.view.View.INVISIBLE
109import android.view.View.VISIBLE
1110import android.widget.Toast
1211import androidx.appcompat.app.AppCompatActivity
1312import androidx.core.content.ContextCompat
14- import androidx.lifecycle.lifecycleScope
1513import com.mapbox.api.directions.v5.models.RouteOptions
1614import com.mapbox.bindgen.Expected
1715import com.mapbox.geojson.Point
@@ -21,10 +19,8 @@ import com.mapbox.maps.MapboxMap
2119import com.mapbox.maps.Style.Companion.MAPBOX_STREETS
2220import com.mapbox.maps.plugin.LocationPuck2D
2321import com.mapbox.maps.plugin.animation.camera
24- import com.mapbox.maps.plugin.gestures.OnMapClickListener
2522import com.mapbox.maps.plugin.gestures.gestures
2623import com.mapbox.maps.plugin.locationcomponent.location
27- import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
2824import com.mapbox.navigation.base.TimeFormat
2925import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions
3026import com.mapbox.navigation.base.extensions.applyLanguageAndVoiceUnitOptions
@@ -39,7 +35,6 @@ import com.mapbox.navigation.core.MapboxNavigation
3935import com.mapbox.navigation.core.MapboxNavigationProvider
4036import com.mapbox.navigation.core.directions.session.RoutesObserver
4137import com.mapbox.navigation.core.formatter.MapboxDistanceFormatter
42- import com.mapbox.navigation.core.preview.RoutesPreviewObserver
4338import com.mapbox.navigation.core.trip.session.LocationMatcherResult
4439import com.mapbox.navigation.core.trip.session.LocationObserver
4540import com.mapbox.navigation.core.trip.session.NavigationSessionStateObserver
@@ -57,10 +52,11 @@ import com.mapbox.navigation.ui.maps.location.NavigationLocationProvider
5752import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowApi
5853import com.mapbox.navigation.ui.maps.route.arrow.api.MapboxRouteArrowView
5954import com.mapbox.navigation.ui.maps.route.arrow.model.RouteArrowOptions
60- import com.mapbox.navigation.ui.maps.route.line.MapboxRouteLineApiExtensions.findClosestRoute
55+ import com.mapbox.navigation.ui.maps.route.line.MapboxRouteLineApiExtensions.setRoutes
6156import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineApi
6257import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineView
6358import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineOptions
59+ import com.mapbox.navigation.ui.maps.route.line.model.RouteLine
6460import com.mapbox.navigation.ui.tripprogress.api.MapboxTripProgressApi
6561import com.mapbox.navigation.ui.tripprogress.model.DistanceRemainingFormatter
6662import com.mapbox.navigation.ui.tripprogress.model.EstimatedTimeToArrivalFormatter
@@ -74,10 +70,11 @@ import com.mapbox.navigation.ui.voice.model.SpeechError
7470import com.mapbox.navigation.ui.voice.model.SpeechValue
7571import com.mapbox.navigation.ui.voice.model.SpeechVolume
7672import com.mapbox.navigation.utils.internal.logD
73+ import kotlinx.coroutines.CoroutineScope
74+ import kotlinx.coroutines.Dispatchers
7775import kotlinx.coroutines.launch
7876import java.util.Locale
7977
80- @OptIn(ExperimentalPreviewMapboxNavigationAPI ::class )
8178class MapboxNavigationActivity : AppCompatActivity () {
8279
8380 /* ----- Layout binding reference ----- */
@@ -232,17 +229,18 @@ class MapboxNavigationActivity : AppCompatActivity() {
232229 }
233230
234231 private val routesObserver = RoutesObserver { result ->
235- if (result.navigationRoutes .isNotEmpty()) {
232+ if (result.routes .isNotEmpty()) {
236233 // generate route geometries asynchronously and render them
237- routeLineAPI.setNavigationRoutes(
238- result.navigationRoutes,
239- mapboxNavigation.getAlternativeMetadataFor( result.navigationRoutes )
240- ) {
234+ CoroutineScope ( Dispatchers . Main ).launch {
235+ val result = routeLineAPI.setRoutes(
236+ listOf ( RouteLine ( result.routes.first(), null ) )
237+ )
241238 val style = mapboxMap.getStyle()
242239 if (style != null ) {
243- routeLineView.renderRouteDrawData(style, it )
240+ routeLineView.renderRouteDrawData(style, result )
244241 }
245242 }
243+
246244 // update the camera position to account for the new route
247245 viewportDataSource.onRouteChanged(result.routes.first())
248246 viewportDataSource.evaluate()
@@ -265,48 +263,11 @@ class MapboxNavigationActivity : AppCompatActivity() {
265263 }
266264 }
267265
268- private val routesPreviewObserver = RoutesPreviewObserver { update ->
269- val routePreview = update.routesPreview
270- if (routePreview != null ) {
271- routeLineAPI.setNavigationRoutes(
272- routePreview.routesList,
273- routePreview.alternativesMetadata
274- ) {
275- val style = mapboxMap.getStyle()
276- if (style != null ) {
277- routeLineView.renderRouteDrawData(style, it)
278- }
279- }
280- // update the camera position to account for the new route
281- viewportDataSource.onRouteChanged(routePreview.primaryRoute)
282- viewportDataSource.evaluate()
283- }
284- }
285-
286266 private val navigationSessionStateObserver = NavigationSessionStateObserver {
287267 logD(" NavigationSessionState=$it " , LOG_CATEGORY )
288268 logD(" sessionId=${mapboxNavigation.getNavigationSessionState().sessionId} " , LOG_CATEGORY )
289269 }
290270
291- private val routeClickPadding = com.mapbox.android.gestures.Utils .dpToPx(30f )
292-
293- private val previewMapClickListener = OnMapClickListener {
294- lifecycleScope.launch {
295- mapboxNavigation.getRoutesPreview() ? : return @launch
296- val result = routeLineAPI.findClosestRoute(
297- it,
298- binding.mapView.getMapboxMap(),
299- routeClickPadding
300- )
301-
302- val routeFound = result.value?.navigationRoute
303- if (routeFound != null && routeFound != routeLineAPI.getPrimaryNavigationRoute()) {
304- mapboxNavigation.changeRoutesPreviewPrimaryRoute(routeFound)
305- }
306- }
307- false
308- }
309-
310271 @SuppressLint(" MissingPermission" )
311272 override fun onCreate (savedInstanceState : Bundle ? ) {
312273 super .onCreate(savedInstanceState)
@@ -440,7 +401,6 @@ class MapboxNavigationActivity : AppCompatActivity() {
440401 findRoute(point)
441402 true
442403 }
443- binding.mapView.gestures.addOnMapClickListener(previewMapClickListener)
444404 }
445405
446406 // initialize view interactions
@@ -478,7 +438,6 @@ class MapboxNavigationActivity : AppCompatActivity() {
478438 mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
479439 mapboxNavigation.registerLocationObserver(locationObserver)
480440 mapboxNavigation.registerVoiceInstructionsObserver(voiceInstructionsObserver)
481- mapboxNavigation.registerRoutesPreviewObserver(routesPreviewObserver)
482441 }
483442
484443 override fun onStop () {
@@ -488,7 +447,6 @@ class MapboxNavigationActivity : AppCompatActivity() {
488447 mapboxNavigation.unregisterRouteProgressObserver(routeProgressObserver)
489448 mapboxNavigation.unregisterLocationObserver(locationObserver)
490449 mapboxNavigation.unregisterVoiceInstructionsObserver(voiceInstructionsObserver)
491- mapboxNavigation.unregisterRoutesPreviewObserver(routesPreviewObserver)
492450 }
493451
494452 override fun onDestroy () {
@@ -510,7 +468,6 @@ class MapboxNavigationActivity : AppCompatActivity() {
510468 RouteOptions .builder()
511469 .applyDefaultNavigationOptions()
512470 .applyLanguageAndVoiceUnitOptions(this )
513- .alternatives(true )
514471 .coordinatesList(listOf (origin, destination))
515472 .layersList(listOf (mapboxNavigation.getZLevel(), null ))
516473 .build(),
@@ -519,7 +476,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
519476 routes : List <NavigationRoute >,
520477 routerOrigin : RouterOrigin
521478 ) {
522- setRoutesPreview (routes)
479+ setRouteAndStartNavigation (routes)
523480 }
524481
525482 override fun onFailure (
@@ -536,18 +493,6 @@ class MapboxNavigationActivity : AppCompatActivity() {
536493 )
537494 }
538495
539- private fun setRoutesPreview (routes : List <NavigationRoute >) {
540- binding.navigateButton.apply {
541- visibility = View .VISIBLE
542- setOnClickListener {
543- visibility = View .GONE
544- setRouteAndStartNavigation(mapboxNavigation.getRoutesPreview()!! .routesList)
545- mapboxNavigation.setRoutesPreview(emptyList())
546- }
547- }
548- mapboxNavigation.setRoutesPreview(routes)
549- }
550-
551496 private fun setRouteAndStartNavigation (route : List <NavigationRoute >) {
552497 // set route
553498 mapboxNavigation.setNavigationRoutes(route)
0 commit comments