Skip to content

Commit 80424de

Browse files
author
Łukasz Paczos
committed
correctly assign MapMatchingMatching#routeIndex
1 parent d722eda commit 80424de

4 files changed

Lines changed: 54 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Mapbox welcomes participation and contributions from everyone.
55
### main
66
- Added `Incident.affectedRoadNames`. [#1457](https://github.com/mapbox/mapbox-java/pull/1457)
77
- Added `StepIntersections.trafficSignal`,`StepIntersections.stopSign` and `StepIntersections.yieldSign`. [#1464](https://github.com/mapbox/mapbox-java/pull/1464)
8+
- Fixed an issue where the `MapMatchingMathcing#routeIndex` wasn't correctly assigned. [#1463](https://github.com/mapbox/mapbox-java/pull/1463)
89

910
### v6.6.0 - Jun 30, 2022
1011
- Fixed `RouteOptions#toUrl` for a case when `RouteOptions` was deserialized from a json generated by an old version of mapbox-java. [#1447](https://github.com/mapbox/mapbox-java/pull/1447)

services-matching/src/main/java/com/mapbox/api/matching/v5/MatchingResponseFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ private boolean isNotSuccessful(Response<MapMatchingResponse> response) {
5151
private List<MapMatchingMatching> generateRouteOptions(Response<MapMatchingResponse> response) {
5252
List<MapMatchingMatching> matchings = response.body().matchings();
5353
List<MapMatchingMatching> modifiedMatchings = new ArrayList<>();
54-
for (MapMatchingMatching matching : matchings) {
54+
for (int i = 0; i < matchings.size(); i++) {
55+
MapMatchingMatching matching = matchings.get(i);
5556
modifiedMatchings.add(
5657
matching.toBuilder()
5758
.routeOptions(
@@ -76,6 +77,7 @@ private List<MapMatchingMatching> generateRouteOptions(Response<MapMatchingRespo
7677
.build()
7778
)
7879
.requestUuid(PLACEHOLDER_UUID)
80+
.routeIndex(String.valueOf(i))
7981
.build()
8082
);
8183
}

services-matching/src/test/java/com/mapbox/api/matching/v5/MapboxMapMatchingTest.java

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.mapbox.api.directions.v5.DirectionsCriteria;
1515
import com.mapbox.api.directions.v5.models.RouteOptions;
1616
import com.mapbox.api.directions.v5.utils.FormatUtils;
17+
import com.mapbox.api.matching.v5.models.MapMatchingMatching;
1718
import com.mapbox.api.matching.v5.models.MapMatchingResponse;
1819
import com.mapbox.core.TestUtils;
1920
import com.mapbox.core.exceptions.ServicesException;
@@ -38,6 +39,8 @@
3839
public class MapboxMapMatchingTest extends TestUtils {
3940

4041
private static final String MAP_MATCHING_FIXTURE = "map_matching_v5_polyline.json";
42+
private static final String MAP_MATCHING_FIXTURE_MULTI =
43+
"map_matching_v5_polyline_multi_match.json";
4144
private static final String MAP_MATCHING_ERROR_FIXTURE = "mapmatching_nosegment_v5_polyline.json";
4245
private static final String MAP_MATCHING_APPROACHES = "mapmatching_v5_approaches.json";
4346
private static final String MAP_MATCHING_WAYPOINT_NAMES_FIXTURE = "mapmatching_v5_waypoint_names.json";
@@ -214,7 +217,7 @@ public void clientAppName_doesSetInHeaderCorrectly2() throws Exception {
214217
}
215218

216219
@Test
217-
public void mapMatchingToDirectionsRoute() throws Exception {
220+
public void toDirectionsRoute() throws Exception {
218221
MapboxMapMatching mapMatching = MapboxMapMatching.builder()
219222
.profile(PROFILE_DRIVING)
220223
.coordinates(coordinates)
@@ -224,6 +227,51 @@ public void mapMatchingToDirectionsRoute() throws Exception {
224227
assertNotNull(mapMatching.executeCall().body().matchings().get(0).toDirectionRoute());
225228
}
226229

230+
@Test
231+
public void toDirectionsRoute_routeIndex() throws Exception {
232+
MapboxMapMatching mapMatching = MapboxMapMatching.builder()
233+
.profile(PROFILE_DRIVING)
234+
.coordinates(coordinates)
235+
.baseUrl(mockUrl.toString())
236+
.accessToken(ACCESS_TOKEN)
237+
.build();
238+
assertEquals(
239+
"0",
240+
mapMatching.executeCall().body().matchings().get(0).toDirectionRoute().routeIndex()
241+
);
242+
}
243+
244+
@Test
245+
public void toDirectionsRoute_routeIndex_multi_match() throws Exception {
246+
server.setDispatcher(new okhttp3.mockwebserver.Dispatcher() {
247+
@Override
248+
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
249+
String resource = MAP_MATCHING_FIXTURE_MULTI;
250+
try {
251+
String response = loadJsonFixture(resource);
252+
return new MockResponse().setBody(response);
253+
} catch (IOException ioException) {
254+
throw new RuntimeException(ioException);
255+
}
256+
}
257+
});
258+
259+
MapboxMapMatching mapMatching = MapboxMapMatching.builder()
260+
.profile(PROFILE_DRIVING)
261+
.coordinates(coordinates)
262+
.baseUrl(mockUrl.toString())
263+
.accessToken(ACCESS_TOKEN)
264+
.build();
265+
List<MapMatchingMatching> matchings = mapMatching.executeCall().body().matchings();
266+
assertEquals(
267+
"0",
268+
matchings.get(0).toDirectionRoute().routeIndex()
269+
);
270+
assertEquals(
271+
"1",
272+
matchings.get(1).toDirectionRoute().routeIndex()
273+
);
274+
}
227275

228276
@Test
229277
public void accessToken_doesGetPlacedInUrlCorrectly() throws Exception {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"matchings":[{"confidence":0.8903306361380453,"geometry":"}_m_Iu{{pAEZwA{@cC}AqBsAaCyA","legs":[{"summary":"Adalbertstraße","weight":113.7,"duration":101.1,"steps":[{"intersections":[{"classes":["restricted"],"out":0,"entry":[true],"bearings":[292],"location":[13.418992,52.500625]}],"driving_side":"right","geometry":"}_m_Iu{{pA?BEV","mode":"driving","maneuver":{"bearing_after":292,"bearing_before":0,"location":[13.418992,52.500625],"modifier":"left","type":"depart","instruction":"Kör åt nordväst"},"weight":19.3,"duration":6.7,"name":"","distance":10.5},{"intersections":[{"out":0,"in":1,"entry":[true,false,true],"bearings":[30,120,210],"location":[13.418848,52.500661]}],"driving_side":"right","geometry":"c`m_Iyz{pAoAu@GE","mode":"driving","maneuver":{"bearing_after":22,"bearing_before":292,"location":[13.418848,52.500661],"modifier":"right","type":"turn","instruction":"Sväng höger in på Adalbertstraße"},"weight":94.4,"duration":94.4,"name":"Adalbertstraße","distance":52.5},{"intersections":[{"in":0,"entry":[true],"bearings":[202],"location":[13.419148,52.501096]}],"driving_side":"right","geometry":"{bm_Iu|{pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":22,"location":[13.419148,52.501096],"modifier":"left","type":"arrive","instruction":"Du är framme vid din 1:a destination, till vänster"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":63},{"summary":"Adalbertstraße","weight":158,"duration":146,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[22],"location":[13.419148,52.501096]},{"out":0,"in":2,"entry":[true,true,false,true],"bearings":[30,120,195,300],"location":[13.419277,52.501287]}],"driving_side":"right","geometry":"{bm_Iu|{pAe@Ym@a@o@a@","mode":"driving","maneuver":{"bearing_after":22,"bearing_before":0,"location":[13.419148,52.501096],"modifier":"left","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":158,"duration":146,"name":"Adalbertstraße","distance":80},{"intersections":[{"in":0,"entry":[true],"bearings":[204],"location":[13.41962,52.501755]}],"driving_side":"right","geometry":"_gm_Is_|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":24,"location":[13.41962,52.501755],"modifier":"right","type":"arrive","instruction":"Du är framme vid din 2:a destination, till höger"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":80},{"summary":"Adalbertstraße","weight":109.4,"duration":109.3,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[24],"location":[13.41962,52.501755]},{"out":0,"in":2,"entry":[true,true,false,true],"bearings":[30,120,210,300],"location":[13.419982,52.502249]}],"driving_side":"right","geometry":"_gm_Is_|pAaBgAOK","mode":"driving","maneuver":{"bearing_after":24,"bearing_before":0,"location":[13.41962,52.501755],"modifier":"right","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":109.4,"duration":109.3,"name":"Adalbertstraße","distance":70.4},{"intersections":[{"in":0,"entry":[true],"bearings":[203],"location":[13.420041,52.502334]}],"driving_side":"right","geometry":"qjm_Igb|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":23,"location":[13.420041,52.502334],"modifier":"left","type":"arrive","instruction":"Du är framme vid din 3:e destination, till vänster"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":70.4},{"summary":"Adalbertstraße","weight":7.1,"duration":7.1,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[23],"location":[13.420041,52.502334]}],"driving_side":"right","geometry":"qjm_Igb|pAaCyA","mode":"driving","maneuver":{"bearing_after":23,"bearing_before":0,"location":[13.420041,52.502334],"modifier":"left","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":7.1,"duration":7.1,"name":"Adalbertstraße","distance":78.5},{"intersections":[{"in":0,"entry":[true],"bearings":[203],"location":[13.420494,52.502984]}],"driving_side":"right","geometry":"snm_Iae|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":23,"location":[13.420494,52.502984],"modifier":"right","type":"arrive","instruction":"Du är framme vid din destination, till höger"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":78.5}],"weight_name":"routability","weight":388.20000000000005,"duration":363.5,"distance":291.9},{"confidence":0.8903306361380453,"geometry":"}_m_Iu{{pAEZwA{@cC}AqBsAaCyA","legs":[{"summary":"Adalbertstraße","weight":113.7,"duration":101.1,"steps":[{"intersections":[{"classes":["restricted"],"out":0,"entry":[true],"bearings":[292],"location":[13.418992,52.500625]}],"driving_side":"right","geometry":"}_m_Iu{{pA?BEV","mode":"driving","maneuver":{"bearing_after":292,"bearing_before":0,"location":[13.418992,52.500625],"modifier":"left","type":"depart","instruction":"Kör åt nordväst"},"weight":19.3,"duration":6.7,"name":"","distance":10.5},{"intersections":[{"out":0,"in":1,"entry":[true,false,true],"bearings":[30,120,210],"location":[13.418848,52.500661]}],"driving_side":"right","geometry":"c`m_Iyz{pAoAu@GE","mode":"driving","maneuver":{"bearing_after":22,"bearing_before":292,"location":[13.418848,52.500661],"modifier":"right","type":"turn","instruction":"Sväng höger in på Adalbertstraße"},"weight":94.4,"duration":94.4,"name":"Adalbertstraße","distance":52.5},{"intersections":[{"in":0,"entry":[true],"bearings":[202],"location":[13.419148,52.501096]}],"driving_side":"right","geometry":"{bm_Iu|{pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":22,"location":[13.419148,52.501096],"modifier":"left","type":"arrive","instruction":"Du är framme vid din 1:a destination, till vänster"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":63},{"summary":"Adalbertstraße","weight":158,"duration":146,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[22],"location":[13.419148,52.501096]},{"out":0,"in":2,"entry":[true,true,false,true],"bearings":[30,120,195,300],"location":[13.419277,52.501287]}],"driving_side":"right","geometry":"{bm_Iu|{pAe@Ym@a@o@a@","mode":"driving","maneuver":{"bearing_after":22,"bearing_before":0,"location":[13.419148,52.501096],"modifier":"left","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":158,"duration":146,"name":"Adalbertstraße","distance":80},{"intersections":[{"in":0,"entry":[true],"bearings":[204],"location":[13.41962,52.501755]}],"driving_side":"right","geometry":"_gm_Is_|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":24,"location":[13.41962,52.501755],"modifier":"right","type":"arrive","instruction":"Du är framme vid din 2:a destination, till höger"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":80},{"summary":"Adalbertstraße","weight":109.4,"duration":109.3,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[24],"location":[13.41962,52.501755]},{"out":0,"in":2,"entry":[true,true,false,true],"bearings":[30,120,210,300],"location":[13.419982,52.502249]}],"driving_side":"right","geometry":"_gm_Is_|pAaBgAOK","mode":"driving","maneuver":{"bearing_after":24,"bearing_before":0,"location":[13.41962,52.501755],"modifier":"right","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":109.4,"duration":109.3,"name":"Adalbertstraße","distance":70.4},{"intersections":[{"in":0,"entry":[true],"bearings":[203],"location":[13.420041,52.502334]}],"driving_side":"right","geometry":"qjm_Igb|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":23,"location":[13.420041,52.502334],"modifier":"left","type":"arrive","instruction":"Du är framme vid din 3:e destination, till vänster"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":70.4},{"summary":"Adalbertstraße","weight":7.1,"duration":7.1,"steps":[{"intersections":[{"out":0,"entry":[true],"bearings":[23],"location":[13.420041,52.502334]}],"driving_side":"right","geometry":"qjm_Igb|pAaCyA","mode":"driving","maneuver":{"bearing_after":23,"bearing_before":0,"location":[13.420041,52.502334],"modifier":"left","type":"depart","instruction":"Kör åt nordost på Adalbertstraße"},"weight":7.1,"duration":7.1,"name":"Adalbertstraße","distance":78.5},{"intersections":[{"in":0,"entry":[true],"bearings":[203],"location":[13.420494,52.502984]}],"driving_side":"right","geometry":"snm_Iae|pA","mode":"driving","maneuver":{"bearing_after":0,"bearing_before":23,"location":[13.420494,52.502984],"modifier":"right","type":"arrive","instruction":"Du är framme vid din destination, till höger"},"weight":0,"duration":0,"name":"Adalbertstraße","distance":0}],"distance":78.5}],"weight_name":"routability","weight":388.20000000000005,"duration":363.5,"distance":291.9}],"tracepoints":[{"alternatives_count":0,"waypoint_index":0,"matchings_index":0,"name":"","location":[13.418992,52.500625]},{"alternatives_count":0,"waypoint_index":1,"matchings_index":0,"name":"Adalbertstraße","location":[13.419148,52.501096]},{"alternatives_count":0,"waypoint_index":2,"matchings_index":0,"name":"Adalbertstraße","location":[13.41962,52.501755]},{"alternatives_count":1,"waypoint_index":3,"matchings_index":0,"name":"Adalbertstraße","location":[13.420041,52.502334]},{"alternatives_count":1,"waypoint_index":4,"matchings_index":0,"name":"Adalbertstraße","location":[13.420494,52.502984]}],"code":"Ok"}

0 commit comments

Comments
 (0)