Skip to content

Commit

Permalink
Copy navigation models to navigation core (#84)
Browse files Browse the repository at this point in the history
* Copy navigation models to navigation core

* Bump dependencies

* Code update based on review by @avalanchas

* Remove fully qualified name
  • Loading branch information
boldtrn authored Oct 13, 2023
1 parent 74b0193 commit 0f8cf44
Show file tree
Hide file tree
Showing 177 changed files with 8,248 additions and 714 deletions.
12 changes: 10 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,16 @@

Maplibre welcomes participation and contributions from everyone.

### v2.1.0 - unreleased

### v3.0.0 - unreleased

- BREAKING CHANGES:
- The navigation models DirectionsResponse and the classes used within this class have been moved the Maplibre-Java to the navigation-core. So the core does not need a dependency to the outdated Maplibre-Java dependency anymore.
- When you pass a DirectionsResponse or DirectionsRoute to the navigation-core, please be aware that you convert it to the local model first. If you are using Mapbox or the GraphHopper navigation endpoint, you can simply use fromJson for parsing.
- You could use something like this: `com.mapbox.services.android.navigation.v5.models.DirectionsResponse.fromJson(JSON_STRING_FROM_API_RESPONSE);`
- `RouteFetcher` has been split to `RouteFetcher` and `MapboxRouteFetcher`. The latter is in the ui module now.
- `NavigationRoute` has been moved to the ui module.
- `RouteProcessorBackgroundThread.Listener#onCheckFasterRoute` was removed as this relied on parts of the RouteFetcher that don't work anymore in the core. If you need this feature, you implement this in the UI code.
- This resulted in some smaller API changes that don't require the RouteFetcher as parameter anymore.
- Support multiple legs by snap to route engine [#77](https://github.com/maplibre/maplibre-navigation-android/pull/77)
- Mark unused option `maximumDistanceOffRoute` as deprecated [#65](https://github.com/maplibre/maplibre-navigation-android/pull/65)
- Fix move-away-from-maneuver logic of `OffRouteDetector` [#65](https://github.com/maplibre/maplibre-navigation-android/pull/65)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import com.mapbox.api.directions.v5.models.DirectionsResponse;
import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.geojson.Point;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.services.android.navigation.testapp.R;
import com.mapbox.services.android.navigation.ui.v5.NavigationView;
import com.mapbox.services.android.navigation.ui.v5.NavigationViewOptions;
import com.mapbox.services.android.navigation.ui.v5.OnNavigationReadyCallback;
import com.mapbox.services.android.navigation.v5.navigation.NavigationRoute;
import com.mapbox.services.android.navigation.ui.v5.route.NavigationRoute;

import java.lang.reflect.Field;

Expand Down Expand Up @@ -89,7 +89,7 @@ private void fetchRoute(Context context) {
Point origin = Point.fromLngLat(-77.033987, 38.900123);
Point destination = Point.fromLngLat(-77.044818, 38.848942);
NavigationRoute.builder(context)
.accessToken(Mapbox.getAccessToken())
.accessToken(context.getString(R.string.mapbox_access_token))
.origin(origin)
.destination(destination)
.build().getRoute(this);
Expand All @@ -105,7 +105,7 @@ private void storeRouteForRotation(DirectionsRoute route) {

private NavigationViewOptions buildTestNavigationViewOptions() {
return NavigationViewOptions.builder()
.directionsRoute(testRoute)
.directionsRoute(com.mapbox.services.android.navigation.v5.models.DirectionsRoute.fromJson(testRoute.toJson()))
.shouldSimulateRoute(true)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
import com.mapbox.api.directions.v5.DirectionsCriteria
import com.mapbox.api.directions.v5.DirectionsCriteria.METRIC
import com.mapbox.api.directions.v5.models.DirectionsResponse
import com.mapbox.api.directions.v5.models.DirectionsRoute
import com.mapbox.geojson.Point
import com.mapbox.mapboxsdk.annotations.MarkerOptions
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
Expand All @@ -26,9 +25,11 @@ import com.mapbox.mapboxsdk.maps.MapboxMap
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.services.android.navigation.testapp.databinding.ActivityMockNavigationBinding
import com.mapbox.services.android.navigation.ui.v5.route.NavigationRoute
import com.mapbox.services.android.navigation.v5.instruction.Instruction
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine
import com.mapbox.services.android.navigation.v5.milestone.*
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute
import com.mapbox.services.android.navigation.v5.navigation.*
import com.mapbox.services.android.navigation.v5.offroute.OffRouteListener
import com.mapbox.services.android.navigation.v5.routeprogress.ProgressChangeListener
Expand Down Expand Up @@ -225,7 +226,7 @@ class MockNavigationActivity :
this.accessToken(getString(R.string.mapbox_access_token))
this.origin(origin)
this.destination(destination)
this.voiceUnits(DirectionsCriteria.METRIC)
this.voiceUnits(METRIC)
this.alternatives(true)
this.baseUrl(getString(R.string.base_url))
}
Expand All @@ -238,9 +239,10 @@ class MockNavigationActivity :
Timber.d("Url: %s", (call.request() as Request).url.toString())
response.body()?.let { response ->
if (response.routes().isNotEmpty()) {
val directionsRoute = response.routes().first()
val maplibreResponse = com.mapbox.services.android.navigation.v5.models.DirectionsResponse.fromJson(response.toJson());
val directionsRoute = DirectionsRoute.fromJson(maplibreResponse.routes().first().toJson())
this@MockNavigationActivity.route = directionsRoute
navigationMapRoute?.addRoutes(response.routes())
navigationMapRoute?.addRoutes(maplibreResponse.routes())
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
import com.mapbox.api.directions.v5.DirectionsCriteria
import com.mapbox.api.directions.v5.models.DirectionsResponse
import com.mapbox.api.directions.v5.models.DirectionsRoute
import com.mapbox.geojson.Point
import com.mapbox.mapboxsdk.annotations.MarkerOptions
import com.mapbox.mapboxsdk.camera.CameraPosition
Expand All @@ -23,7 +22,9 @@ import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.services.android.navigation.testapp.databinding.ActivityNavigationUiBinding
import com.mapbox.services.android.navigation.ui.v5.NavigationLauncher
import com.mapbox.services.android.navigation.ui.v5.NavigationLauncherOptions
import com.mapbox.services.android.navigation.ui.v5.route.NavigationRoute
import com.mapbox.services.android.navigation.v5.milestone.*
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute
import com.mapbox.services.android.navigation.v5.navigation.*
import com.mapbox.turf.TurfConstants
import com.mapbox.turf.TurfMeasurement
Expand Down Expand Up @@ -185,6 +186,9 @@ class NavigationUIActivity :
this.destination(destination)
this.voiceUnits(DirectionsCriteria.METRIC)
this.alternatives(true)
// If you are using this with the GraphHopper Directions API, you need to uncomment user and profile here.
//this.user("gh")
//this.profile("car")
this.baseUrl(getString(R.string.base_url))
}

Expand All @@ -196,9 +200,9 @@ class NavigationUIActivity :
Timber.d("Url: %s", (call.request() as Request).url.toString())
response.body()?.let { response ->
if (response.routes().isNotEmpty()) {
val directionsRoute = response.routes().first()
this@NavigationUIActivity.route = directionsRoute
navigationMapRoute?.addRoutes(response.routes())
val maplibreResponse = com.mapbox.services.android.navigation.v5.models.DirectionsResponse.fromJson(response.toJson());
this@NavigationUIActivity.route = maplibreResponse.routes().first()
navigationMapRoute?.addRoutes(maplibreResponse.routes())
binding.startRouteLayout.visibility = View.VISIBLE
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ package com.mapbox.services.android.navigation.testapp
import android.location.Location
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.mapbox.api.directions.v5.DirectionsCriteria
import com.mapbox.api.directions.v5.models.DirectionsResponse
import com.mapbox.api.directions.v5.models.DirectionsRoute
import com.mapbox.geojson.Point
import com.mapbox.mapboxsdk.location.LocationComponent
import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions
Expand All @@ -16,8 +14,10 @@ import com.mapbox.mapboxsdk.maps.MapboxMap
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.services.android.navigation.testapp.databinding.ActivitySnapToRouteNavigationBinding
import com.mapbox.services.android.navigation.ui.v5.route.NavigationRoute
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine
import com.mapbox.services.android.navigation.v5.milestone.*
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute
import com.mapbox.services.android.navigation.v5.navigation.*
import com.mapbox.services.android.navigation.v5.routeprogress.ProgressChangeListener
import com.mapbox.services.android.navigation.v5.routeprogress.RouteProgress
Expand Down Expand Up @@ -128,7 +128,7 @@ class SnapToRouteNavigationActivity : AppCompatActivity(), OnMapReadyCallback,
this.origin(Point.fromLngLat(9.7536318, 52.3717979))
this.addWaypoint(Point.fromLngLat(9.741052, 52.360496))
this.destination(Point.fromLngLat(9.756259, 52.342620))
this.voiceUnits(DirectionsCriteria.METRIC)
this.voiceUnits(com.mapbox.services.android.navigation.v5.models.DirectionsCriteria.METRIC)
this.alternatives(true)
this.baseUrl(getString(R.string.base_url))
}
Expand All @@ -141,9 +141,10 @@ class SnapToRouteNavigationActivity : AppCompatActivity(), OnMapReadyCallback,
Timber.d("Url: %s", (call.request() as Request).url.toString())
response.body()?.let { responseBody ->
if (responseBody.routes().isNotEmpty()) {
val directionsRoute = responseBody.routes().first()
val maplibreResponse = com.mapbox.services.android.navigation.v5.models.DirectionsResponse.fromJson(responseBody.toJson());
val directionsRoute = maplibreResponse.routes().first()
this@SnapToRouteNavigationActivity.route = directionsRoute
navigationMapRoute?.addRoutes(responseBody.routes())
navigationMapRoute?.addRoutes(maplibreResponse.routes())

startNavigation()
}
Expand Down
30 changes: 17 additions & 13 deletions gradle/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,35 @@ ext {
mapLibreService : '5.9.0',
mapLibreTurf : '5.9.0',
mapLibreAnnotations : '1.0.0',
autoValue : '1.10.1',
annotation : '1.7.0',
autoValue : '1.10.4',
autoValueGson : '1.3.1',
autoValueParcel : '0.2.5',
junit : '4.13.2',
androidxCoreVersion : '1.9.0',
appcompatVersion : '1.5.1',
appcompatVersion : '1.6.1',
cardViewVersion : '1.0.0',
androidxAnnotationVersion : '1.6.0',
constraintLayoutVersion : '2.1.4',
materialVersion : '1.7.0',
recyclerViewVersion : '1.2.1',
recyclerViewVersion : '1.3.1',
mockito : '4.9.0',
hamcrest : '2.0.0.0',
errorprone : '2.16',
errorprone : '2.22.0',
butterknife : '10.2.3',
leakCanaryVersion : '2.10',
leakCanaryVersion : '2.12',
timber : '5.0.1',
testRunnerVersion : '1.0.1',
espressoVersion : '3.5.0',
espressoVersion : '3.5.1',
spoonRunner : '1.6.2',
commonsIO : '2.6',
robolectric : '4.9',
commonsIO : '2.14.0',
robolectric : '4.10.3',
lifecycle : '1.1.1',
lifecycleVersion : '2.2.0',
picasso : '2.71828',
gmsLocation : '21.0.1',
testRulesVersion : '1.5.0',
jsonVersion : '20180813'
jsonVersion : '20230618'
]

pluginVersion = [
Expand All @@ -48,10 +50,10 @@ ext {
errorprone : '2.0.2',
coveralls : '2.8.1',
spotbugs : '1.3',
gradle : '7.3.1',
kotlinGradle : '1.7.20',
gradle : '7.4.2',
kotlinGradle : '1.9.10',
dependencyGraph : '0.3.0',
dependencyUpdates: '0.44.0'
dependencyUpdates: '0.44.0',
]

dependenciesList = [
Expand All @@ -66,6 +68,7 @@ ext {
autoValueAnnotations : "com.google.auto.value:auto-value-annotations:${version.autoValue}",
autoValuesParcel : "com.ryanharter.auto.value:auto-value-parcel:${version.autoValueParcel}",
autoValuesParcelAdapter : "com.ryanharter.auto.value:auto-value-parcel-adapter:${version.autoValueParcel}",
autoValueGson : "com.ryanharter.auto.value:auto-value-gson:${version.autoValueGson}",

// butterknife
butterknife : "com.jakewharton:butterknife:${version.butterknife}",
Expand All @@ -80,6 +83,7 @@ ext {
androidxCardView : "androidx.cardview:cardview:${version.cardViewVersion}",
androidxConstraintLayout: "androidx.constraintlayout:constraintlayout:${version.constraintLayoutVersion}",
kotlinstdlib : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${androidVersions.kotlinVersion}",
supportAnnotation : "androidx.annotation:annotation:${version.annotation}",

// architecture
lifecycleExtensions : "androidx.lifecycle:lifecycle-extensions:${version.lifecycleVersion}",
Expand Down Expand Up @@ -120,6 +124,6 @@ ext {
errorprone : "net.ltgt.gradle:gradle-errorprone-plugin:${pluginVersion.errorprone}",
dependencyGraph : "com.vanniktech:gradle-dependency-graph-generator-plugin:${pluginVersion.dependencyGraph}",
dependencyUpdates : "com.github.ben-manes:gradle-versions-plugin:${pluginVersion.dependencyUpdates}",
kotlinGradle : "org.jetbrains.kotlin:kotlin-gradle-plugin:${androidVersions.kotlinVersion}"
kotlinGradle : "org.jetbrains.kotlin:kotlin-gradle-plugin:${androidVersions.kotlinVersion}",
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import android.content.Context;


import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.mapboxsdk.location.engine.LocationEngine;
import com.mapbox.services.android.navigation.v5.location.engine.LocationEngineProvider;
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.services.android.navigation.ui.v5.listeners.NavigationListener;
import com.mapbox.services.android.navigation.v5.navigation.MapboxNavigationOptions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import android.location.Location;
import androidx.annotation.NonNull;

import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.geojson.Point;

public interface NavigationContract {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import android.preference.PreferenceManager;

import com.google.gson.Gson;
import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.navigation.NavigationConstants;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import androidx.annotation.Nullable;

import com.google.auto.value.AutoValue;
import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.mapboxsdk.camera.CameraPosition;

@AutoValue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import androidx.annotation.NonNull;
import com.google.android.material.bottomsheet.BottomSheetBehavior;

import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.core.utils.TextUtils;
import com.mapbox.geojson.Point;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import androidx.annotation.Nullable;

import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;

public abstract class NavigationUiOptions {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import androidx.lifecycle.ViewModelProvider;

import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.api.directions.v5.models.RouteOptions;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.RouteOptions;
import com.mapbox.core.utils.TextUtils;
import com.mapbox.geojson.Point;
import com.mapbox.mapboxsdk.camera.CameraPosition;
Expand All @@ -42,7 +42,6 @@
import com.mapbox.services.android.navigation.v5.location.replay.ReplayRouteLocationEngine;
import com.mapbox.services.android.navigation.v5.navigation.MapboxNavigation;
import com.mapbox.services.android.navigation.v5.navigation.MapboxNavigationOptions;
import com.mapbox.services.android.navigation.v5.navigation.NavigationRoute;
import com.mapbox.services.android.navigation.v5.navigation.NavigationTimeFormat;
import com.mapbox.services.android.navigation.v5.utils.DistanceFormatter;
import com.mapbox.services.android.navigation.v5.utils.LocaleUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import androidx.annotation.Nullable;

import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback;
import com.mapbox.api.directions.v5.models.BannerInstructions;
import com.mapbox.api.directions.v5.models.DirectionsRoute;
import com.mapbox.services.android.navigation.v5.models.BannerInstructions;
import com.mapbox.services.android.navigation.v5.models.DirectionsRoute;
import com.mapbox.geojson.Point;
import com.mapbox.services.android.navigation.ui.v5.listeners.BannerInstructionsListener;
import com.mapbox.services.android.navigation.ui.v5.listeners.InstructionListListener;
Expand Down
Loading

0 comments on commit 0f8cf44

Please sign in to comment.