diff --git a/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/OnboardRouterActivityJava.java b/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/OnboardRouterActivityJava.java index 3495a39a437..9d0fb5b63d1 100644 --- a/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/OnboardRouterActivityJava.java +++ b/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/OnboardRouterActivityJava.java @@ -12,23 +12,23 @@ public class OnboardRouterActivityJava extends AppCompatActivity { - private Router offboardRouter; + private Router offboardRouter; - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); - setupRouter(); - } + setupRouter(); + } - private void setupRouter() { - Config config = new Config( - this.getApplication().getExternalFilesDir(null).getPath(), - null, - null, - null, - null); + private void setupRouter() { + Config config = new Config( + this.getApplication().getExternalFilesDir(null).getPath(), + null, + null, + null, + null); - offboardRouter = new MapboxOnboardRouter(Mapbox.getAccessToken(), config); - } + offboardRouter = new MapboxOnboardRouter(Mapbox.getAccessToken(), config); + } } diff --git a/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/utils/extensions/Mappers.kt b/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/utils/extensions/Mappers.kt index 61804484126..0f288c948db 100644 --- a/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/utils/extensions/Mappers.kt +++ b/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/utils/extensions/Mappers.kt @@ -3,9 +3,32 @@ package com.mapbox.services.android.navigation.v5.utils.extensions import com.mapbox.api.directions.v5.WalkingOptions +import com.mapbox.api.directions.v5.models.BannerComponents +import com.mapbox.api.directions.v5.models.BannerInstructions +import com.mapbox.api.directions.v5.models.BannerText import com.mapbox.api.directions.v5.models.DirectionsRoute +import com.mapbox.api.directions.v5.models.IntersectionLanes +import com.mapbox.api.directions.v5.models.LegAnnotation +import com.mapbox.api.directions.v5.models.LegStep +import com.mapbox.api.directions.v5.models.MaxSpeed import com.mapbox.api.directions.v5.models.RouteLeg +import com.mapbox.api.directions.v5.models.RouteOptions +import com.mapbox.api.directions.v5.models.StepIntersection +import com.mapbox.api.directions.v5.models.StepManeuver +import com.mapbox.api.directions.v5.models.VoiceInstructions +import com.mapbox.navigation.base.route.model.BannerComponentsNavigation +import com.mapbox.navigation.base.route.model.BannerInstructionsNavigation +import com.mapbox.navigation.base.route.model.BannerTextNavigation +import com.mapbox.navigation.base.route.model.IntersectionLanesNavigation +import com.mapbox.navigation.base.route.model.LegAnnotationNavigation +import com.mapbox.navigation.base.route.model.LegStepNavigation +import com.mapbox.navigation.base.route.model.MaxSpeedNavigation import com.mapbox.navigation.base.route.model.Route +import com.mapbox.navigation.base.route.model.RouteLegNavigation +import com.mapbox.navigation.base.route.model.RouteOptionsNavigation +import com.mapbox.navigation.base.route.model.StepIntersectionNavigation +import com.mapbox.navigation.base.route.model.StepManeuverNavigation +import com.mapbox.navigation.base.route.model.VoiceInstructionsNavigation import com.mapbox.navigation.base.route.model.WalkingOptionsNavigation fun WalkingOptionsNavigation.mapToWalkingOptions(): WalkingOptions = WalkingOptions @@ -16,16 +39,158 @@ fun WalkingOptionsNavigation.mapToWalkingOptions(): WalkingOptions = WalkingOpti .build() fun Route.mapToDirectionsRoute(): DirectionsRoute { - val duration = duration.toDouble() - val legs = legs?.let { it as List } - - return DirectionsRoute.builder() + return DirectionsRoute.builder() // FIXME route index .distance(distance) - .duration(duration) + .duration(duration.toDouble()) .geometry(geometry) .weight(weight) .weightName(weightName) .voiceLanguage(voiceLanguage) - .legs(legs) + .legs(legs?.map(RouteLegNavigation::mapToRouteLeg)) + .routeOptions(routeOptions?.mapToRouteOptions()) .build() } + +fun RouteOptionsNavigation.mapToRouteOptions() = + RouteOptions.builder() + .apply { + walkingOptions?.let { walkingOptions(it.mapToWalkingOptions()) } + accessToken?.let { accessToken(it) } + exclude?.let { exclude(it) } + requestUuid?.let { requestUuid(it) } + } + .profile(profile) + .user(user) + .baseUrl(baseUrl) + .alternatives(alternatives) + .annotations(annotations) + .approaches(approaches)!! + .bannerInstructions(bannerInstructions) + .bearings(bearings) + .continueStraight(continueStraight) + .coordinates(coordinates) + .geometries(geometries) + .approaches(approaches)!! + .language(language) + .overview(overview) + .radiuses(radiuses) + .roundaboutExits(roundaboutExits) + .steps(steps) + .alternatives(alternatives) + .voiceInstructions(voiceInstructions) + .voiceUnits(voiceUnits) + .waypointIndices(waypointIndices)!! + .waypointNames(waypointNames)!! + .waypointTargets(waypointTargets)!! + .build() + +fun RouteLegNavigation.mapToRouteLeg() = + RouteLeg.builder() + .annotation(annotation?.mapToLegAnnotation()) + .distance(distance) + .duration(duration) + .steps(steps?.map(LegStepNavigation::mapToLegStep)) + .summary(summary) + .build() + +fun LegAnnotationNavigation.mapToLegAnnotation() = + LegAnnotation.builder() + .congestion(congestion) + .distance(distance) + .duration(duration) + .maxspeed(maxspeed?.map(MaxSpeedNavigation::mapToMaxSpeed)) + .speed(speed) + .build() + +fun LegStepNavigation.mapToLegStep() = + LegStep.builder() + .bannerInstructions(bannerInstructions?.map(BannerInstructionsNavigation::mapToBannerInstruction) ?: emptyList()) + .destinations(destinations) + .distance(distance) + .drivingSide(drivingSide) + .duration(duration) + .exits(exits) + .geometry(geometry) + .intersections(intersections?.map(StepIntersectionNavigation::mapToStepIntersection) ?: emptyList()) + .maneuver(maneuver.mapToStepManeuver()) + .mode(mode) + .name(name) + .pronunciation(pronunciation) + .ref(ref) + .rotaryName(rotaryName) + .rotaryPronunciation(rotaryPronunciation) + .voiceInstructions(voiceInstructions?.map(VoiceInstructionsNavigation::mapToVoiceInstructions) ?: emptyList()) + .weight(weight) + .build() + +fun MaxSpeedNavigation.mapToMaxSpeed() = + MaxSpeed.builder() + .speed(speed) + .none(none) + .unit(unit) + .unknown(unknown) + .build() + +fun BannerInstructionsNavigation.mapToBannerInstruction() = + BannerInstructions.builder() + .distanceAlongGeometry(distanceAlongGeometry) + .primary(primary?.mapToBannerText() ?: BannerText.builder().build()) + .secondary(secondary?.mapToBannerText()) + .sub(sub?.mapToBannerText()) + .build() + +fun StepIntersectionNavigation.mapToStepIntersection() = + StepIntersection.builder() + .bearings(bearings) + .classes(classes) + .entry(entry) + .`in`(into) + .out(out) + .lanes(lanes?.map(IntersectionLanesNavigation::mapToIntersectionLanes)) + .rawLocation(rawLocation) + .build() + +fun StepManeuverNavigation.mapToStepManeuver() = + StepManeuver.builder() + .bearingAfter(bearingAfter) + .bearingBefore(bearingBefore) + .exit(exit) + .instruction(instruction) + .modifier(modifier) + .rawLocation(rawLocation) + .type(type) + .build() + +fun VoiceInstructionsNavigation.mapToVoiceInstructions() = + VoiceInstructions.builder() + .announcement(announcement) + .distanceAlongGeometry(distanceAlongGeometry) + .ssmlAnnouncement(ssmlAnnouncement) + .build() + +fun BannerTextNavigation.mapToBannerText() = + BannerText.builder() + .text(text ?: "")!! + .components(components?.map(BannerComponentsNavigation::mapToBannerComponents))!! + .degrees(degrees) + .drivingSide(drivingSide) + .modifier(modifier) + .type(type) + .build() + +fun IntersectionLanesNavigation.mapToIntersectionLanes() = + IntersectionLanes.builder() + .indications(indications) + .valid(valid) + .build() + +fun BannerComponentsNavigation.mapToBannerComponents() = + BannerComponents.builder() + .abbreviation(abbreviation) + .abbreviationPriority(abbreviationPriority) + .active(active) + .directions(directions) + .imageBaseUrl(imageBaseUrl) + .text(text) + .type(type) + .build() diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/BannerComponentsNavigationDto.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/BannerComponentsNavigationDto.kt index e29a29fad05..df664fbc070 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/BannerComponentsNavigationDto.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/BannerComponentsNavigationDto.kt @@ -4,8 +4,8 @@ import com.google.gson.annotations.SerializedName import com.mapbox.navigation.base.route.model.BannerComponentsNavigation class BannerComponentsNavigationDto( - val text: String?, - val type: String?, + val text: String, + val type: String, @SerializedName("abbr") val abbreviation: String?, @SerializedName("abbr_priority") diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/LegStepNavigationDto.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/LegStepNavigationDto.kt index ff38b856cdb..32b97bf3060 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/LegStepNavigationDto.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/dto/LegStepNavigationDto.kt @@ -11,13 +11,13 @@ internal class LegStepNavigationDto( val name: String?, val ref: String?, val destinations: String?, - val mode: String?, + val mode: String, val pronunciation: String?, @SerializedName("rotary_name") val rotaryName: String?, @SerializedName("rotary_pronunciation") val rotaryPronunciation: String?, - val maneuver: StepManeuverNavigation?, + val maneuver: StepManeuverNavigation, val voiceInstructions: List?, val bannerInstructions: List?, @SerializedName("driving_side") diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/BannerComponentsNavigation.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/BannerComponentsNavigation.kt index 1048b5b89f8..8ef1049c92f 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/BannerComponentsNavigation.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/BannerComponentsNavigation.kt @@ -52,8 +52,8 @@ package com.mapbox.navigation.base.route.model * @since 1.0 */ data class BannerComponentsNavigation( - val text: String?, - val type: String?, + val text: String, + val type: String, val abbreviation: String?, val abbreviationPriority: Int?, val imageBaseUrl: String?, diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/LegStepNavigation.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/LegStepNavigation.kt index defd99ec558..e9dd349a3e7 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/LegStepNavigation.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/LegStepNavigation.kt @@ -77,11 +77,11 @@ class LegStepNavigation( val name: String?, val ref: String?, val destinations: String?, - val mode: String?, + val mode: String, val pronunciation: String?, val rotaryName: String?, val rotaryPronunciation: String?, - val maneuver: StepManeuverNavigation?, + val maneuver: StepManeuverNavigation, val voiceInstructions: List?, val bannerInstructions: List?, val drivingSide: String?, diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/RouteOptionsNavigation.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/RouteOptionsNavigation.kt index dbe6b085476..8ed6b7cceee 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/RouteOptionsNavigation.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/RouteOptionsNavigation.kt @@ -40,6 +40,9 @@ class RouteOptionsNavigation( } } + val coordinates: List + get() = listOf(origin.point) + waypoints.map { it.point } + destination.point + class Builder internal constructor() { private lateinit var _origin: RoutePointNavigation private lateinit var _destination: RoutePointNavigation diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepIntersectionNavigation.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepIntersectionNavigation.kt index 9cf1eb9d9c6..b3aa567768b 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepIntersectionNavigation.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepIntersectionNavigation.kt @@ -63,4 +63,7 @@ class StepIntersectionNavigation( val into: Int?, val out: Int?, val lanes: List? -) +) { + val rawLocation: DoubleArray + get() = doubleArrayOf(location.longitude(), location.latitude()) +} diff --git a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepManeuverNavigation.kt b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepManeuverNavigation.kt index 9d8c05a8aaf..eb95a0eb08c 100644 --- a/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepManeuverNavigation.kt +++ b/libnavigation-base/src/main/java/com/mapbox/navigation/base/route/model/StepManeuverNavigation.kt @@ -200,4 +200,7 @@ class StepManeuverNavigation( EXIT_ROTARY ) annotation class StepManeuverTypeNavigation + + val rawLocation: DoubleArray + get() = doubleArrayOf(location.longitude(), location.latitude()) }