Skip to content

Commit 483b635

Browse files
committed
NAVAND-940: fix buildings highlighting
1 parent c8bc7ab commit 483b635

File tree

5 files changed

+819
-30
lines changed

5 files changed

+819
-30
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Mapbox welcomes participation and contributions from everyone.
1313
- Fixed the `NavigationView` issue where route arrows are being rendered above navigation puck after device rotation. [#6747](https://github.com/mapbox/mapbox-navigation-android/pull/6747)
1414
- Fixed an issue where a refresh of the routes or a change in alternatives that occurred while user was off-route would call `RerouteController#interrupt` and interrupt the potentially ongoing reroute process without recovery. [#6719](https://github.com/mapbox/mapbox-navigation-android/pull/6719)
1515
- Improved OpenLR matching rate. Updates take lowest FRC to next point into account during path generation. [#6750](https://github.com/mapbox/mapbox-navigation-android/pull/6750)
16+
- Fixed an issue where `MapboxBuildingsApi` would fail to highlight buildings. [#6749](https://github.com/mapbox/mapbox-navigation-android/pull/6749)
1617

1718
## Mapbox Navigation SDK 2.9.5 - 13 December, 2022
1819
### Changelog

libnavigation-base/api/current.txt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -854,9 +854,15 @@ package com.mapbox.navigation.base.speed.model {
854854
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedLimitSign VIENNA;
855855
}
856856

857-
public enum SpeedLimitUnit {
858-
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedLimitUnit KILOMETRES_PER_HOUR;
859-
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedLimitUnit MILES_PER_HOUR;
857+
@Deprecated public enum SpeedLimitUnit {
858+
enum_constant @Deprecated public static final com.mapbox.navigation.base.speed.model.SpeedLimitUnit KILOMETRES_PER_HOUR;
859+
enum_constant @Deprecated public static final com.mapbox.navigation.base.speed.model.SpeedLimitUnit MILES_PER_HOUR;
860+
}
861+
862+
public enum SpeedUnit {
863+
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedUnit KILOMETERS_PER_HOUR;
864+
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedUnit METERS_PER_SECOND;
865+
enum_constant public static final com.mapbox.navigation.base.speed.model.SpeedUnit MILES_PER_HOUR;
860866
}
861867

862868
}

libnavigation-core/api/current.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ package com.mapbox.navigation.core.replay.route {
596596
method public String getEncodedPath();
597597
method public boolean hasNext();
598598
method public com.mapbox.geojson.Point next();
599+
method public void skip(int count);
599600
property public final com.mapbox.geojson.Point? current;
600601
property public final String encodedPath;
601602
}
@@ -607,6 +608,9 @@ package com.mapbox.navigation.core.replay.route {
607608
method @UiThread public com.mapbox.navigation.core.replay.route.ReplayProgressObserver updateOptions(com.mapbox.navigation.core.replay.route.ReplayRouteOptions options);
608609
}
609610

611+
public final class ReplayProgressObserverKt {
612+
}
613+
610614
public final class ReplayRouteMapper {
611615
ctor public ReplayRouteMapper(com.mapbox.navigation.core.replay.route.ReplayRouteOptions options = ReplayRouteOptions.<init>().build());
612616
ctor public ReplayRouteMapper();

libnavui-maps/src/main/java/com/mapbox/navigation/ui/maps/building/BuildingProcessor.kt

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.mapbox.navigation.ui.maps.building
22

33
import com.mapbox.bindgen.ExpectedFactory
4+
import com.mapbox.geojson.Point
45
import com.mapbox.maps.RenderedQueryOptions
56
import com.mapbox.navigation.base.internal.extensions.isLegWaypoint
7+
import com.mapbox.navigation.base.internal.extensions.isRequestedWaypoint
68
import com.mapbox.navigation.base.internal.utils.internalWaypoints
9+
import com.mapbox.navigation.base.trip.model.RouteProgress
710
import com.mapbox.navigation.ui.maps.building.model.BuildingError
811
import com.mapbox.navigation.ui.maps.building.model.BuildingValue
912
import kotlin.coroutines.resume
@@ -48,18 +51,34 @@ internal object BuildingProcessor {
4851
fun queryBuildingOnWaypoint(
4952
action: BuildingAction.QueryBuildingOnWaypoint
5053
): BuildingResult.GetDestination {
51-
val waypoints = action.progress.navigationRoute.internalWaypoints()
5254
val waypointIndex = action.progress.currentLegProgress?.legIndex!! + 1
53-
val waypoint = waypoints.filter { it.isLegWaypoint() }.getOrNull(waypointIndex)
54-
return BuildingResult.GetDestination(waypoint?.target ?: waypoint?.location)
55+
val buildingLocation = getBuildingLocation(waypointIndex, action.progress)
56+
return BuildingResult.GetDestination(buildingLocation)
5557
}
5658

5759
fun queryBuildingOnFinalDestination(
5860
action: BuildingAction.QueryBuildingOnFinalDestination
5961
): BuildingResult.GetDestination {
60-
val lastWaypoint = action.progress.navigationRoute
61-
.internalWaypoints()
62-
.lastOrNull()
63-
return BuildingResult.GetDestination(lastWaypoint?.target ?: lastWaypoint?.location)
62+
val waypointIndex = action.progress.navigationRoute.internalWaypoints()
63+
.indexOfLast { it.isLegWaypoint() }
64+
val buildingLocation = getBuildingLocation(waypointIndex, action.progress)
65+
return BuildingResult.GetDestination(buildingLocation)
66+
}
67+
68+
private fun getBuildingLocation(legWaypointIndex: Int, progress: RouteProgress): Point? {
69+
val waypoints = progress.navigationRoute.internalWaypoints()
70+
val legWaypoints = waypoints.filter { it.isLegWaypoint() }
71+
val waypoint = legWaypoints.getOrNull(legWaypointIndex)
72+
if (waypoint == null) return null
73+
if (waypoint.target != null) {
74+
return waypoint.target
75+
}
76+
if (!waypoint.isRequestedWaypoint()) {
77+
return waypoint.location
78+
}
79+
val nonRequestedWaypointsCount = legWaypoints.take(legWaypointIndex + 1)
80+
.count { !it.isRequestedWaypoint() }
81+
return progress.navigationRoute.routeOptions.coordinatesList()
82+
.getOrNull(legWaypointIndex - nonRequestedWaypointsCount)
6483
}
6584
}

0 commit comments

Comments
 (0)