Google Navigation SDK (Android): SetDestinations (..., CustomRoutesoptions (routetoken)) nimmt immer noch die schnellsteAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Google Navigation SDK (Android): SetDestinations (..., CustomRoutesoptions (routetoken)) nimmt immer noch die schnellste

Post by Anonymous »

Ich verwende die Google Navigation SDK für Android zusammen mit der API -Routes -Routen - Anweisungen/V2: Computeroutes . Ich möchte mit dem Alternativ (nicht am schnellsten) navigieren, also nehme ich seine RoutEToken und über bitte an den Navigator.

Code: Select all

@SuppressLint("MissingPermission")
private fun startNavigationWithRouteToken(originLat: Double, originLng: Double) {
val token = routeTokenArg ?: return toast("Missing route token")
if (!::navigator.isInitialized) return toast("Navigator not ready yet")
if (!mLocationPermissionGranted) return toast("Location permission required")

val destLat = destLatArg ?: return toast("Missing destination lat")
val destLng = destLngArg ?: return toast("Missing destination lng")

val currentLatLng = getCurrentDeviceLatLng()
val isNearOrigin = currentLatLng != null && metersBetween(
currentLatLng.latitude, currentLatLng.longitude,
originLat, originLng
) < 100 // Example threshold: 100 meters

if (isNearOrigin) {
// User is close to the route's original start. Redeem the token.
Log.d(TAG, "User is near origin. Attempting to redeem route token.")

val originWp = Waypoint.Builder().setLatLng(originLat, originLng).build()
val destWp = Waypoint.Builder().setLatLng(destLat, destLng).build()

val custom = CustomRoutesOptions.builder()
.setRouteToken(token)
.setTravelMode(CustomRoutesOptions.TravelMode.DRIVING)
.build()

navigator.setDestinations(listOf(originWp, destWp), custom)
.setOnResultListener { code ->
if (code == Navigator.RouteStatus.OK) {
Log.d(TAG, "Token redemption successful. Starting guidance.")
navigator.setAudioGuidance(Navigator.AudioGuidance.VOICE_ALERTS_AND_GUIDANCE)
navigator.startGuidance()
} else {
Log.e(TAG, "Token redemption failed ($code). Falling back to live route.")
toast("Failed to use preferred route. Starting live navigation.")
}
}
} else {
// User is NOT near the origin. Don't use the token;
Log.d(TAG, "User is not near origin. Starting live navigation without token.")
toast("Starting live navigation from current location.")
}
}
Was ich erwarte: Der Navigator folgt der Route, die auf der alternativen Route, die ich ausgewählt habe, beschrieben. Siehe:
Der Benutzer ist nahezu Ursprung. Versuch, Routenmotive einzubeziehen. < /P>
Token Erlösung erfolgreich. Guidance. /> Verwenden Sie die Routetoken auf der alternativen Route mit SetDestinations (..., CustomRoutesoptions). Dies zwingt den Weg grob, aber ich mag diese Lösung nicht - es ist spröde, erreicht Wegpunktgrenzen und besiegt den Zweck der Verwendung von Routenmarken. Herkunft? Oder sollte ich bei Verwendung eines RoutEToken nur den Wegpunkt des Ziels übergeben (d. H. Der Ursprung kommt von aktuellem GPS und darf nicht als Wegpunkt geliefert werden)? /> 3.) Wenn ich die alternative Route erzwingen möchte, die ich ausgewählt habe (nicht am schnellsten), wie können Sie dies mit Navigation SDK tun?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post