mapbox / mapbox-navigation-android

Mapbox Navigation SDK for Android
https://docs.mapbox.com/android/navigation/overview/
Other
622 stars 318 forks source link

Navigation ui not working with Custom routes MapboxMapMatching #4248

Open hosnyDev opened 3 years ago

hosnyDev commented 3 years ago

Hi, I am following documentation Custom routes to navigate user to steps using MapboxMapMatching but navigation not start and routeProgressState always return ROUTE_INVALID

When give getDirectionsRoute() instead of route in NavigationViewOptions everything's work fine but I need to work with my custom routes

12c9ec96-ae56-478f-a862-44fde5a50b02

this is my code

import android.annotation.SuppressLint import android.content.Context import android.location.Location import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.digis2.inosnavigation.R import com.digis2.inosnavigation.data.model.points.PointsModel import com.mapbox.api.directions.v5.DirectionsCriteria import com.mapbox.api.directions.v5.models.DirectionsRoute import com.mapbox.api.matching.v5.MapboxMapMatching import com.mapbox.api.matching.v5.models.MapMatchingResponse import com.mapbox.geojson.Point import com.mapbox.mapboxsdk.Mapbox import com.mapbox.navigation.base.options.NavigationOptions import com.mapbox.navigation.base.trip.model.RouteProgressState import com.mapbox.navigation.core.MapboxNavigation import com.mapbox.navigation.ui.NavigationView import com.mapbox.navigation.ui.NavigationViewOptions import com.mapbox.navigation.ui.OnNavigationReadyCallback import com.mapbox.navigation.ui.listeners.NavigationListener import com.mapbox.navigation.ui.puck.PuckDrawableSupplier import com.mapbox.services.android.navigation.ui.v5.listeners.RouteListener import com.mapbox.services.android.navigation.v5.milestone. import com.mapbox.services.android.navigation.v5.navigation.NavigationEventListener import com.mapbox.services.android.navigation.v5.offroute.OffRouteListener import com.mapbox.services.android.navigation.v5.route.FasterRouteListener import com.mapbox.services.android.navigation.v5.routeprogress.ProgressChangeListener import com.mapbox.services.android.navigation.v5.routeprogress.RouteProgress import retrofit2.Call import retrofit2.Callback import retrofit2.Response import java.util.

class MapBoxActivity : AppCompatActivity(), OnNavigationReadyCallback, NavigationListener, ProgressChangeListener, RouteListener, OffRouteListener, MilestoneEventListener, NavigationEventListener, FasterRouteListener {

private lateinit var navigationView: NavigationView
private lateinit var mapboxNavigation: MapboxNavigation

private var routeCoordinates: List<Point>? = null
private var currentRoute: DirectionsRoute? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Mapbox.getInstance(applicationContext, getString(R.string.mapbox_access_token))
    setContentView(R.layout.activity_map_box)

    navigationView = findViewById(R.id.navigationView)
    navigationView.onCreate(savedInstanceState)
    navigationView.initialize(this)

    mapboxNavigation = MapboxNavigation(MapboxNavigation
            .defaultNavigationOptionsBuilder(this,"mapbox_access_token")
            // .locationEngine(CustomLocationEngineCallback(this))
            .build())

}

override fun onLowMemory() {
    super.onLowMemory()
    navigationView.onLowMemory()
}

override fun onStart() {
    super.onStart()
    navigationView.onStart()
}

override fun onResume() {
    super.onResume()
    navigationView.onResume()
}

override fun onStop() {
    super.onStop()
    navigationView.onStop()
}

override fun onPause() {
    super.onPause()
    navigationView.onPause()
}

override fun onDestroy() {
    navigationView.onDestroy()
    super.onDestroy()
}

override fun onBackPressed() {
    // If the navigation view didn't need to do anything, call super
    if (!navigationView.onBackPressed()) {
        super.onBackPressed()
    }
}

override fun onSaveInstanceState(outState: Bundle) {
    navigationView.onSaveInstanceState(outState)
    super.onSaveInstanceState(outState)
}

override fun onRestoreInstanceState(savedInstanceState: Bundle) {
    super.onRestoreInstanceState(savedInstanceState)
    navigationView.onRestoreInstanceState(savedInstanceState)
}

override fun onNavigationReady(isRunning: Boolean) {
    getData()
}

override fun onNavigationRunning() {
    // Empty because not needed in this example
}

override fun onNavigationFinished() {
    finish()
}

override fun onCancelNavigation() {
    navigationView.stopNavigation()
    finish()
} 

private fun getData() {
    routeCoordinates = ArrayList()

    val list = intent.getSerializableExtra("newPoints") as List<PointsModel.Point>

    for (i in list.indices) {
        (routeCoordinates as ArrayList<Point>).add(Point.fromLngLat(list[i].getLongitude(), list[i].getLatitude()))
    }
    val mapboxMapMatchingRequest: MapboxMapMatching

    if ((routeCoordinates as ArrayList<Point>).size > 25) {

        mapboxMapMatchingRequest = MapboxMapMatching.builder()
                .accessToken("mapbox_access_token")
                .coordinates((routeCoordinates as ArrayList<Point>).subList(0, 24))
                .steps(true)
                .voiceInstructions(true)
                .bannerInstructions(true)
                .profile(DirectionsCriteria.PROFILE_DRIVING)
                .build()
    } else {
        mapboxMapMatchingRequest = MapboxMapMatching.builder()
                .accessToken("mapbox_access_token")
                .coordinates(routeCoordinates as ArrayList<Point>)
                .steps(true)
                .voiceInstructions(true)
                .bannerInstructions(true)
                .profile(DirectionsCriteria.PROFILE_DRIVING)
                .build()
    }

    mapboxMapMatchingRequest.enqueueCall(object : Callback<MapMatchingResponse> {
        @SuppressLint("MissingPermission")
        override fun onResponse(call: Call<MapMatchingResponse>, response: Response<MapMatchingResponse>) {
            if (response.isSuccessful) {
                response.body()?.matchings()?.let { matchingList ->
                    matchingList[0].toDirectionRoute().apply {

                        val route = response.body()?.matchings()?.get(0)?.toDirectionRoute()!!

                        mapboxNavigation.setRoutes(listOf(this))
                        val optionsBuilder = NavigationViewOptions.builder(this@MapBoxActivity)
                                .navigationListener(this@MapBoxActivity)
                                .directionsRoute(route)
                                .shouldSimulateRoute(false)
                                .puckDrawableSupplier(DefaultMapboxPuckDrawableSupplier(this@MapBoxActivity))
                        navigationView.startNavigation(optionsBuilder.build())

                    }
                }

            }
        }

        override fun onFailure(call: Call<MapMatchingResponse>, throwable: Throwable) {

        }
    })

}

override fun allowRerouteFrom(offRoutePoint: Point?): Boolean {
    return true
}

override fun onOffRoute(offRoutePoint: Point?) {
    Toast.makeText(this, "Off route", Toast.LENGTH_SHORT).show()
}

override fun onRerouteAlong(directionsRoute: DirectionsRoute?) {
}

override fun onFailedReroute(errorMessage: String?) {
}

override fun onArrival() {
    Toast.makeText(this, "You have arrived!", Toast.LENGTH_SHORT).show()
}

private var lastKnownLocation: Location? = null

override fun onProgressChange(location: Location?, routeProgress: RouteProgress?) {
    lastKnownLocation = location;

}

private fun getLastKnownLocation(): Point? {
    return Point.fromLngLat(lastKnownLocation!!.longitude, lastKnownLocation!!.latitude)
}

override fun userOffRoute(location: Location?) {
    TODO("Not yet implemented")
}

override fun onMilestoneEvent(routeProgress: RouteProgress?, instruction: String?, milestone: Milestone?) {
    TODO("Not yet implemented")
}

override fun onRunning(running: Boolean) {
    TODO("Not yet implemented")
}

override fun fasterRouteFound(directionsRoute: DirectionsRoute?) {
    TODO("Not yet implemented")
}

private fun getDirectionsRoute(): DirectionsRoute {
    val directionsRouteAsJson = "{\"routeIndex\":\"0\",\"distance\":1988.6,\"duration\":433.9,\"geometry\":\"}oragA|dnmhFtO{SvC_ExCtEvLjPfSrXbCdDeCdDmI~KkLzOyGbJqCzD}B`Bc\\\\xc@wBvES^Sb@cAtByApCu@v@_An@wGx@aSdCkCZZxE`Cn^x@zLt@bLF|@XdEXlEx@dMvDbn@TrDXvElClb@`@|G^|ElAlR|@~Mf@|H`@bGfHjgAv@vMX|EtAlRxA`UnCdb@jAvQdJtvAZvETlDXjE~Cdf@nEfr@JxADp@Bf@Dd@Dv@N|BdKv~AzAnUdInoAgEh@wn@pH}C^YD\\\\`FzAjUtGnbATtD`@EvC]j@Ir_@oE\",\"weight\":774.2,\"weight_name\":\"routability\",\"legs\":[{\"distance\":1988.6,\"duration\":433.9,\"summary\":\"Fremont Street, Pine Street\",\"steps\":[{\"distance\":53.7,\"duration\":10.3,\"geometry\":\"}oragA|dnmhFtO{SvC_E\",\"name\":\"Beale Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.396255,37.791503],\"bearing_before\":0.0,\"bearing_after\":135.0,\"instruction\":\"Head southeast on Beale Street\",\"type\":\"depart\",\"modifier\":\"right\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":53.7,\"announcement\":\"Head southeast on Beale Street, then turn right onto Mission Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eHead southeast on Beale Street, then turn right onto Mission Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":53.7,\"primary\":{\"text\":\"Mission Street\",\"components\":[{\"text\":\"Mission Street\",\"type\":\"text\",\"abbr\":\"Mission St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"right\"},\"sub\":{\"text\":\"Fremont Street\",\"components\":[{\"text\":\"Fremont Street\",\"type\":\"text\",\"abbr\":\"Fremont St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"right\"}}],\"driving_side\":\"right\",\"weight\":34.9,\"intersections\":[{\"location\":[-122.396255,37.791503],\"bearings\":[135],\"entry\":[true],\"out\":0}]},{\"distance\":108.6,\"duration\":36.7,\"geometry\":\"ozqagA`jmmhFxCtEvLjPfSrXbCdD\",\"name\":\"Mission Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.395825,37.79116],\"bearing_before\":135.0,\"bearing_after\":225.0,\"instruction\":\"Turn right onto Mission Street\",\"type\":\"turn\",\"modifier\":\"right\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":44.4,\"announcement\":\"Turn right onto Fremont Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eTurn right onto Fremont Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":108.6,\"primary\":{\"text\":\"Fremont Street\",\"components\":[{\"text\":\"Fremont Street\",\"type\":\"text\",\"abbr\":\"Fremont St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"right\"}}],\"driving_side\":\"right\",\"weight\":61.5,\"intersections\":[{\"location\":[-122.395825,37.79116],\"bearings\":[45,135,225,315],\"entry\":[true,true,true,false],\"in\":3,\"out\":2}]},{\"distance\":283.1,\"duration\":76.4,\"geometry\":\"qopagA|`omhFeCdDmI~KkLzOyGbJqCzD}B`Bc\\\\xc@wBvES^Sb@cAtByApCu@v@_An@wGx@aSdCkCZ\",\"name\":\"Fremont Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.396703,37.790473],\"bearing_before\":223.0,\"bearing_after\":315.0,\"instruction\":\"Turn right onto Fremont Street\",\"type\":\"turn\",\"modifier\":\"right\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":263.1,\"announcement\":\"In 900 feet, turn left onto Pine Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eIn 900 feet, turn left onto Pine Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"},{\"distanceAlongGeometry\":55.6,\"announcement\":\"Turn left onto Pine Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eTurn left onto Pine Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":283.1,\"primary\":{\"text\":\"Pine Street\",\"components\":[{\"text\":\"Pine Street\",\"type\":\"text\",\"abbr\":\"Pine St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"}}],\"driving_side\":\"right\",\"weight\":132.8,\"intersections\":[{\"location\":[-122.396703,37.790473],\"bearings\":[45,135,225,315],\"entry\":[false,false,true,true],\"in\":0,\"out\":3},{\"location\":[-122.398298,37.791734],\"bearings\":[135,300],\"entry\":[false,true],\"in\":0,\"out\":1}]},{\"distance\":1217.6,\"duration\":218.89999999999998,\"geometry\":\"yhtagAbxrmhFZxE`Cn^x@zLt@bLF|@XdEXlEx@dMvDbn@TrDXvElClb@`@|G^|ElAlR|@~Mf@|H`@bGfHjgAv@vMX|EtAlRxA`UnCdb@jAvQdJtvAZvETlDXjE~Cdf@nEfr@JxADp@Bf@Dd@Dv@N|BdKv~AzAnUdInoA\",\"name\":\"Pine Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.39861,37.792413],\"bearing_before\":350.0,\"bearing_after\":260.0,\"instruction\":\"Turn left onto Pine Street\",\"type\":\"turn\",\"modifier\":\"left\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":1197.6,\"announcement\":\"Continue on Pine Street for a half mile\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eContinue on Pine Street for a half mile\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"},{\"distanceAlongGeometry\":389.4,\"announcement\":\"In a quarter mile, turn right onto Taylor Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eIn a quarter mile, turn right onto Taylor Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"},{\"distanceAlongGeometry\":83.4,\"announcement\":\"Turn right onto Taylor Street, then turn left onto California Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eTurn right onto Taylor Street, then turn left onto California Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":1217.6,\"primary\":{\"text\":\"Taylor Street\",\"components\":[{\"text\":\"Taylor Street\",\"type\":\"text\",\"abbr\":\"Taylor St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"right\"}},{\"distanceAlongGeometry\":83.4,\"primary\":{\"text\":\"Taylor Street\",\"components\":[{\"text\":\"Taylor Street\",\"type\":\"text\",\"abbr\":\"Taylor St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"right\"},\"sub\":{\"text\":\"California Street\",\"components\":[{\"text\":\"California Street\",\"type\":\"text\",\"abbr\":\"California St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"}}],\"driving_side\":\"right\",\"weight\":364.5,\"intersections\":[{\"location\":[-122.39861,37.792413],\"bearings\":[75,165,255,345],\"entry\":[false,false,true,true],\"in\":1,\"out\":2},{\"location\":[-122.399785,37.792261],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,false],\"in\":0,\"out\":2},{\"location\":[-122.400959,37.792116],\"bearings\":[75,165,255,345],\"entry\":[false,false,true,true],\"in\":0,\"out\":2},{\"location\":[-122.402598,37.791909],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,false],\"in\":0,\"out\":2},{\"location\":[-122.404233,37.791703],\"bearings\":[75,180,255,345],\"entry\":[false,false,true,true],\"in\":0,\"out\":2},{\"location\":[-122.40576,37.791505],\"bearings\":[75,165,255,345],\"entry\":[false,false,true,true],\"in\":0,\"out\":2},{\"location\":[-122.407358,37.791301],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,true],\"in\":0,\"out\":2},{\"location\":[-122.408952,37.791098],\"bearings\":[75,165,255,345],\"entry\":[false,false,true,true],\"in\":0,\"out\":2},{\"location\":[-122.409044,37.791087],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,false],\"in\":0,\"out\":2},{\"location\":[-122.410639,37.790884],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,false],\"in\":0,\"out\":2}]},{\"distance\":107.7,\"duration\":25.8,\"geometry\":\"e|pagA|nmnhFgEh@wn@pH}C^YD\",\"name\":\"Taylor Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.412287,37.790675],\"bearing_before\":260.0,\"bearing_after\":350.0,\"instruction\":\"Turn right onto Taylor Street\",\"type\":\"turn\",\"modifier\":\"right\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":62.6,\"announcement\":\"Turn left onto California Street, then turn left onto Jones Street\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eTurn left onto California Street, then turn left onto Jones Street\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":107.7,\"primary\":{\"text\":\"California Street\",\"components\":[{\"text\":\"California Street\",\"type\":\"text\",\"abbr\":\"California St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"}},{\"distanceAlongGeometry\":62.6,\"primary\":{\"text\":\"California Street\",\"components\":[{\"text\":\"California Street\",\"type\":\"text\",\"abbr\":\"California St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"},\"sub\":{\"text\":\"Jones Street\",\"components\":[{\"text\":\"Jones Street\",\"type\":\"text\",\"abbr\":\"Jones St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"}}],\"driving_side\":\"right\",\"weight\":70.3,\"intersections\":[{\"location\":[-122.412287,37.790675],\"bearings\":[75,165,255,345],\"entry\":[false,false,true,true],\"in\":0,\"out\":3}]},{\"distance\":146.2,\"duration\":42.4,\"geometry\":\"}wragA~zmnhF\\\\`FzAjUtGnbATtD\",\"name\":\"California Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.41248,37.791631],\"bearing_before\":350.0,\"bearing_after\":260.0,\"instruction\":\"Turn left onto California Street\",\"type\":\"turn\",\"modifier\":\"left\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":51.7,\"announcement\":\"Turn left onto Jones Street, then you will arrive at your destination\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eTurn left onto Jones Street, then you will arrive at your destination\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":146.2,\"primary\":{\"text\":\"Jones Street\",\"components\":[{\"text\":\"Jones Street\",\"type\":\"text\",\"abbr\":\"Jones St\",\"abbr_priority\":0}],\"type\":\"turn\",\"modifier\":\"left\"}}],\"driving_side\":\"right\",\"weight\":86.8,\"intersections\":[{\"location\":[-122.41248,37.791631],\"bearings\":[75,165,255,345],\"entry\":[true,false,true,true],\"in\":1,\"out\":2}]},{\"distance\":71.7,\"duration\":23.4,\"geometry\":\"wjragAraqnhF`@EvC]j@Ir_@oE\",\"name\":\"Jones Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.414122,37.79142],\"bearing_before\":260.0,\"bearing_after\":170.0,\"instruction\":\"Turn left onto Jones Street\",\"type\":\"turn\",\"modifier\":\"left\"},\"voiceInstructions\":[{\"distanceAlongGeometry\":15.3,\"announcement\":\"You have arrived at your destination, on the right\",\"ssmlAnnouncement\":\"\\u003cspeak\\u003e\\u003camazon:effect name\\u003d\\\"drc\\\"\\u003e\\u003cprosody rate\\u003d\\\"1.08\\\"\\u003eYou have arrived at your destination, on the right\\u003c/prosody\\u003e\\u003c/amazon:effect\\u003e\\u003c/speak\\u003e\"}],\"bannerInstructions\":[{\"distanceAlongGeometry\":71.7,\"primary\":{\"text\":\"You will arrive\",\"components\":[{\"text\":\"You will arrive\",\"type\":\"text\"}],\"type\":\"arrive\",\"modifier\":\"right\"}},{\"distanceAlongGeometry\":15.3,\"primary\":{\"text\":\"You have arrived\",\"components\":[{\"text\":\"You have arrived\",\"type\":\"text\"}],\"type\":\"arrive\",\"modifier\":\"right\"}}],\"driving_side\":\"right\",\"weight\":23.4,\"intersections\":[{\"location\":[-122.414122,37.79142],\"bearings\":[75,165,255,345],\"entry\":[false,true,true,true],\"in\":0,\"out\":1}]},{\"distance\":0.0,\"duration\":0.0,\"geometry\":\"}bqagAtypnhF\",\"name\":\"Jones Street\",\"mode\":\"driving\",\"maneuver\":{\"location\":[-122.413995,37.790783],\"bearing_before\":171.0,\"bearing_after\":0.0,\"instruction\":\"You have arrived at your destination, on the right\",\"type\":\"arrive\",\"modifier\":\"right\"},\"voiceInstructions\":[],\"bannerInstructions\":[],\"driving_side\":\"right\",\"weight\":0.0,\"intersections\":[{\"location\":[-122.413995,37.790783],\"bearings\":[351],\"entry\":[true],\"in\":0}]}],\"annotation\":{\"distance\":[41.75872891540546,11.943930596414795,12.720147968330114,34.58112560559672,50.96480933738249,10.349556668565532,10.428744124966986,26.062939337835754,33.61207745353073,22.152629772397148,11.584122498337331,8.22504067141732,73.25791925952063,11.603839142628226,1.7930152150745173,1.9339724019326627,6.4182775391464615,8.137686480966448,3.8827293592940286,4.137411880032337,15.778927074065876,36.18605026816596,7.882482295429149,9.70628239052936,44.88520535070527,19.777529614845466,18.70069668033605,2.7608352091952852,8.820943994209998,9.167951891088123,20.211271187411434,67.05841934336348,8.004641462478803,9.602196312248573,50.45852431578543,12.710488322858675,9.917381766860117,27.67756036992424,21.374879966188537,14.151341864692084,11.581827207587462,103.10585401718104,20.975906679342675,9.863007930072529,27.750876716852083,31.428390784757813,50.12927675688965,26.70541846540595,124.91524890087112,9.619673955896003,7.744241825057303,9.081282300519934,55.824774196397755,72.99751351106848,4.01125146327413,2.22260556286811,1.7719511994183288,1.7030446015893967,2.4836226090145,5.608523009263369,136.39335067018692,32.0538539535892,114.65384371553199,11.274751280297357,86.03444465258252,8.898707903215941,1.4697888668235173,10.071397847728418,31.880018736822993,96.1785674755274,8.091589695903005,1.90914496306627,8.555399787319097,2.4861312264216893,58.775343965717596],\"congestion\":[\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"heavy\",\"moderate\",\"moderate\",\"moderate\",\"heavy\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"moderate\",\"moderate\",\"moderate\",\"moderate\",\"heavy\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"moderate\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\",\"low\"]}}],\"routeOptions\":{\"baseUrl\":\"https://api.mapbox.com\",\"user\":\"mapbox\",\"profile\":\"driving-traffic\",\"coordinates\":[[-122.396485,37.7913239],[-122.4142621,37.7907495]],\"alternatives\":true,\"language\":\"en\",\"continue_straight\":false,\"roundabout_exits\":false,\"geometries\":\"polyline6\",\"overview\":\"full\",\"steps\":true,\"annotations\":\"congestion,distance\",\"voice_instructions\":true,\"banner_instructions\":true,\"voice_units\":\"metric\",\"access_token\":\"${getString(R.string.mapbox_access_token)}\",\"uuid\":\"ck7dtdd2z00yx75plynvtan26\"},\"voiceLocale\":\"en\"}"
    return DirectionsRoute.fromJson(directionsRouteAsJson)
}

}

class DefaultMapboxPuckDrawableSupplier(private val context: Context) : PuckDrawableSupplier { override fun getPuckDrawable(routeProgressState: RouteProgressState): Int = when (routeProgressState) { RouteProgressState.ROUTE_INVALID -> { Toast.makeText(context, "ROUTE_INVALID", Toast.LENGTH_SHORT).show() R.drawable.ic_car } RouteProgressState.ROUTE_INITIALIZED -> { Toast.makeText(context, "ROUTE_INITIALIZED", Toast.LENGTH_SHORT).show() R.drawable.ic_car } RouteProgressState.LOCATION_TRACKING -> { Toast.makeText(context, "LOCATION_TRACKING", Toast.LENGTH_SHORT).show() R.drawable.ic_car } RouteProgressState.LOCATION_STALE -> { Toast.makeText(context, "LOCATION_STALE", Toast.LENGTH_SHORT).show() R.drawable.ic_car } else -> R.drawable.ic_car } }

hosnyDev commented 3 years ago

@danesfeder

hosnyDev commented 3 years ago

@zugaldia

zugaldia commented 3 years ago

Thanks @hosnyDev for the report. Would you be able to share a sample custom route that you're passing to the SDK that is not working?

/cc: @AhmerKhan1 for visibility on this BYOR use case.

hosnyDev commented 3 years ago

"points": [ { "latitude": 30.011444, "longitude": 31.2061212 }, { "latitude": 30.0115907, "longitude": 31.2064505 }, { "latitude": 30.0115371, "longitude": 31.2064826 }, { "latitude": 30.0113869, "longitude": 31.2062252 }, { "latitude": 30.0110114, "longitude": 31.205442 }, { "latitude": 30.0107861, "longitude": 31.2048626 }, { "latitude": 30.0106144, "longitude": 31.2043262 }, { "latitude": 30.0105715, "longitude": 31.2042511 }, { "latitude": 30.0103998, "longitude": 31.2038112 }, { "latitude": 30.0096917, "longitude": 31.2019229 }, { "latitude": 30.0095952, "longitude": 31.2016976 }, { "latitude": 30.0089729, "longitude": 31.1999595 }, { "latitude": 30.0085974, "longitude": 31.199069 }, { "latitude": 30.0077391, "longitude": 31.1967838 }, { "latitude": 30.0065696, "longitude": 31.19349 }, { "latitude": 30.0063443, "longitude": 31.1928999 }, { "latitude": 30.0061405, "longitude": 31.1924493 }, { "latitude": 30.0058508, "longitude": 31.1917412 }, { "latitude": 30.0056148, "longitude": 31.1910653 }, { "latitude": 30.0051963, "longitude": 31.1899924 }, { "latitude": 30.0046384, "longitude": 31.1884689 }, { "latitude": 30.0044346, "longitude": 31.1878681 }, { "latitude": 30.0037909, "longitude": 31.1861837 }, { "latitude": 30.0033295, "longitude": 31.185025 }, { "latitude": 30.0028038, "longitude": 31.1835444 }, { "latitude": 30.0023961, "longitude": 31.1825144 }, { "latitude": 30.0023103, "longitude": 31.1822462 }, { "latitude": 30.0015593, "longitude": 31.1803043 }, { "latitude": 30.0013018, "longitude": 31.1795855 }, { "latitude": 30.0010979, "longitude": 31.1791027 }, { "latitude": 30.0002718, "longitude": 31.1767852 }, { "latitude": 29.999392, "longitude": 31.1745644 }, { "latitude": 29.9983943, "longitude": 31.1719143 }, { "latitude": 29.9979973, "longitude": 31.1709166 }, { "latitude": 29.9968386, "longitude": 31.1678052 }, { "latitude": 29.9966133, "longitude": 31.1671615 }, { "latitude": 29.9957979, "longitude": 31.1650693 }, { "latitude": 29.9943066, "longitude": 31.161164 }, { "latitude": 29.9941671, "longitude": 31.1606491 }, { "latitude": 29.9940169, "longitude": 31.1603594 }, { "latitude": 29.9936092, "longitude": 31.1592543 }, { "latitude": 29.9934268, "longitude": 31.1588037 }, { "latitude": 29.9933946, "longitude": 31.1586106 }, { "latitude": 29.9931157, "longitude": 31.1579347 }, { "latitude": 29.9926007, "longitude": 31.1564755 }, { "latitude": 29.992075, "longitude": 31.1551452 }, { "latitude": 29.9918711, "longitude": 31.1546838 }, { "latitude": 29.9917102, "longitude": 31.1542225 }, { "latitude": 29.9913561, "longitude": 31.1533213 }, { "latitude": 29.9904442, "longitude": 31.1508644 }, { "latitude": 29.9899721, "longitude": 31.1495554 }, { "latitude": 29.9898863, "longitude": 31.1493623 }, { "latitude": 29.9889743, "longitude": 31.1469054 }, { "latitude": 29.9880946, "longitude": 31.1446095 }, { "latitude": 29.9887705, "longitude": 31.1441052 }, { "latitude": 29.9887383, "longitude": 31.1440194 } ]

ugurcanatas commented 3 years ago

Is there any updates on this ? I can't seem to get it to work with MapMatching. I've mentioned this problem with details in #4329

zugaldia commented 3 years ago

Thanks for your patience. We haven't been able to prioritize further work on this issue yet, we'll make sure to post an update here as soon as we have one.

abhishek1508 commented 2 years ago

Thanks for using the Mapbox Navigation SDK for Android and being a valued customer.

Mapbox will be soon deprecating any support for v0 and v1 versions of the SDK. To facilitate this transition we’re launching a new drop-in UI component into v2, equivalent to the existing NavigationView v1 in its design goals, however with a more modern and customizable API.

We plan to launch this new drop-in UI component as a Developer Preview feature in April, as part of the v2.5 series. Since you are using NavigationView with v1, we’d love to hear your feedback so that we can incorporate it ahead of a GA release.

If you’re interested in having early access to the upcoming drop-in UI for v2 and its documentation, drop a comment on this ticket or send an email to abhishek.kejriwal@mapbox.com

/cc @zugaldia @AhmerKhan1