от ComputOutes Я получаю два маршрута: по умолчанию один и альтернативная. Я хочу ориентироваться, используя альтернативную (не самый быстрый), поэтому я беру его routetoken и передаю ее на навигатор.
Код: Выделить всё
@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.")
}
}
Пользователь близок к происхождению. Попытка выкупить токен маршрута. Начальное руководство. /> Использование routetoken из альтернативного маршрута с SetDestinations (..., CustomRouteSoptions). < /p>
(альтернативный подход) Преобразование всей выбранной полилинии во многие путевые точки остановки и вызовы SetDestinations (Waypoints, Routingoptions). Это примерно вызывает путь, но мне не нравится это решение - оно хрупкое, достигает ограничений на путевую точку и побеждает цель использования токенов маршрута. источник? Или я должен пройти только направленную точку назначения при использовании Routetoken (то есть происхождение происходит от текущего GPS и не должно поставляться в качестве путевой точки)? /> 3.) Если я хочу вывести альтернативный маршрут, который я выбрал (не самый быстрый), каков поддерживаемый способ сделать это с навигацией SDK?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ionsroutet
Мобильная версия