Skip to content

Commit 4c0fe94

Browse files
authored
Traffic tendency (#1451)
1 parent a15e481 commit 4c0fe94

10 files changed

Lines changed: 1036 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Mapbox welcomes participation and contributions from everyone.
44

55
### main
66
- 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)
7+
- Added traffic tendency annotations. [#1451](https://github.com/mapbox/mapbox-java/pull/1451)
78

89
### v6.5.0 - May 25, 2022
910
- No additional changes

samples/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ dependencies {
3030

3131
buildConfig {
3232
packageName = 'com.mapbox.sample'
33-
buildConfigField 'String', 'MAPBOX_ACCESS_TOKEN', System.getenv("MAPBOX_ACCESS_TOKEN")
33+
buildConfigField 'String', 'MAPBOX_ACCESS_TOKEN', project.hasProperty('MAPBOX_ACCESS_TOKEN') ? project.property('MAPBOX_ACCESS_TOKEN') : System.getenv('MAPBOX_ACCESS_TOKEN')
3434
}
3535

services-directions-models/src/main/java/com/mapbox/api/directions/v5/DirectionsCriteria.java

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mapbox.api.directions.v5;
22

3+
import androidx.annotation.IntDef;
34
import androidx.annotation.StringDef;
45

56
import java.lang.annotation.Retention;
@@ -143,6 +144,12 @@ public final class DirectionsCriteria {
143144
*/
144145
public static final String ANNOTATION_CLOSURE = "closure";
145146

147+
/**
148+
* The tendency value conveys the changing
149+
* state of traffic congestion (increasing, decreasing, constant etc).
150+
*/
151+
public static final String ANNOTATION_TRAFFIC_TENDENCY = "traffic_tendency";
152+
146153
/**
147154
* Exclude all tolls along the returned directions route.
148155
*
@@ -270,6 +277,36 @@ public final class DirectionsCriteria {
270277
*/
271278
public static final String APPROACH_CURB = "curb";
272279

280+
/***
281+
* Conveys the changing state of traffic congestion: unknown.
282+
*/
283+
public static final int TRAFFIC_TENDENCY_UNKNOWN = 0;
284+
285+
/***
286+
* Conveys the changing state of traffic congestion: constant.
287+
*/
288+
public static final int TRAFFIC_TENDENCY_CONSTANT_CONGESTION = 1;
289+
290+
/***
291+
* Conveys the changing state of traffic congestion: increasing.
292+
*/
293+
public static final int TRAFFIC_TENDENCY_INCREASING_CONGESTION = 2;
294+
295+
/***
296+
* Conveys the changing state of traffic congestion: decreasing.
297+
*/
298+
public static final int TRAFFIC_TENDENCY_DECREASING_CONGESTION = 3;
299+
300+
/***
301+
* Conveys the changing state of traffic congestion: rapidly increasing.
302+
*/
303+
public static final int TRAFFIC_TENDENCY_RAPIDLY_INCREASING_CONGESTION = 4;
304+
305+
/***
306+
* Conveys the changing state of traffic congestion: rapidly decreasing.
307+
*/
308+
public static final int TRAFFIC_TENDENCY_RAPIDLY_DECREASING_CONGESTION = 5;
309+
273310
private DirectionsCriteria() {
274311
//not called
275312
}
@@ -329,7 +366,8 @@ private DirectionsCriteria() {
329366
ANNOTATION_CONGESTION,
330367
ANNOTATION_CONGESTION_NUMERIC,
331368
ANNOTATION_MAXSPEED,
332-
ANNOTATION_CLOSURE
369+
ANNOTATION_CLOSURE,
370+
ANNOTATION_TRAFFIC_TENDENCY
333371
})
334372
public @interface AnnotationCriteria {
335373
}
@@ -417,4 +455,22 @@ private DirectionsCriteria() {
417455
})
418456
public @interface ApproachesCriteria {
419457
}
458+
459+
/**
460+
* Retention policy for the traffic tendency annotations.
461+
* The tendency value conveys the changing state of traffic
462+
* congestion (increasing, decreasing, constant etc). New values
463+
* could be introduced in the future without an API version change.
464+
*/
465+
@Retention(RetentionPolicy.CLASS)
466+
@IntDef({
467+
TRAFFIC_TENDENCY_UNKNOWN,
468+
TRAFFIC_TENDENCY_CONSTANT_CONGESTION,
469+
TRAFFIC_TENDENCY_INCREASING_CONGESTION,
470+
TRAFFIC_TENDENCY_DECREASING_CONGESTION,
471+
TRAFFIC_TENDENCY_RAPIDLY_INCREASING_CONGESTION,
472+
TRAFFIC_TENDENCY_RAPIDLY_DECREASING_CONGESTION
473+
})
474+
public @interface TrafficTendencyCriteria {
475+
}
420476
}

services-directions-models/src/main/java/com/mapbox/api/directions/v5/models/LegAnnotation.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mapbox.api.directions.v5.models;
22

3+
import androidx.annotation.NonNull;
34
import androidx.annotation.Nullable;
45
import com.google.auto.value.AutoValue;
56
import com.google.gson.Gson;
@@ -92,6 +93,17 @@ public static Builder builder() {
9293
@SerializedName("congestion_numeric")
9394
public abstract List<Integer> congestionNumeric();
9495

96+
/**
97+
* The traffic tendency between each pair of coordinates.
98+
* @return a list of {@link Integer} where each value matches
99+
* {@link DirectionsCriteria.TrafficTendencyCriteria}. The tendency value conveys the changing
100+
* state of traffic congestion (increasing, decreasing, constant etc). New values
101+
* could be introduced in the future without an API version change.
102+
*/
103+
@Nullable
104+
@SerializedName("traffic_tendency")
105+
public abstract List<Integer> trafficTendency();
106+
95107
/**
96108
* Convert the current {@link LegAnnotation} to its builder holding the currently assigned
97109
* values. This allows you to modify a single property and then rebuild the object resulting in
@@ -196,12 +208,22 @@ public abstract static class Builder extends DirectionsJsonObject.Builder<Builde
196208
*/
197209
public abstract Builder congestionNumeric(@Nullable List<Integer> congestionNumeric);
198210

211+
/**
212+
* The traffic tendency between each pair of coordinates.
213+
* @param trafficTendency is a list of {@link Integer} where each value matches
214+
* {@link DirectionsCriteria.TrafficTendencyCriteria}. The tendency value conveys the changing
215+
* state of traffic congestion (increasing, decreasing, constant etc).
216+
*/
217+
@NonNull
218+
public abstract Builder trafficTendency(@Nullable List<Integer> trafficTendency);
219+
199220
/**
200221
* Build a new {@link LegAnnotation} object.
201222
*
202223
* @return a new {@link LegAnnotation} using the provided values in this builder
203224
* @since 3.0.0
204225
*/
205226
public abstract LegAnnotation build();
227+
206228
}
207229
}

services-directions-models/src/main/java/com/mapbox/api/directions/v5/models/RouteOptions.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ public List<Integer> layersList() {
348348
* {@link DirectionsCriteria#ANNOTATION_CONGESTION_NUMERIC}
349349
* {@link DirectionsCriteria#ANNOTATION_MAXSPEED}
350350
* {@link DirectionsCriteria#ANNOTATION_CLOSURE}
351+
* {@link DirectionsCriteria#ANNOTATION_TRAFFIC_TENDENCY}
351352
* See the {@link RouteLeg} object for more details on what is included with annotations.
352353
* <p>
353354
* Must be used in conjunction with {@link DirectionsCriteria#OVERVIEW_FULL}
@@ -368,6 +369,7 @@ public List<Integer> layersList() {
368369
* {@link DirectionsCriteria#ANNOTATION_CONGESTION_NUMERIC}
369370
* {@link DirectionsCriteria#ANNOTATION_MAXSPEED}
370371
* {@link DirectionsCriteria#ANNOTATION_CLOSURE}
372+
* {@link DirectionsCriteria#ANNOTATION_TRAFFIC_TENDENCY}
371373
* See the {@link RouteLeg} object for more details on what is included with annotations.
372374
* <p>
373375
* Must be used in conjunction with {@link DirectionsCriteria#OVERVIEW_FULL}
@@ -1391,6 +1393,7 @@ public abstract Builder overview(
13911393
* {@link DirectionsCriteria#ANNOTATION_CONGESTION_NUMERIC}
13921394
* {@link DirectionsCriteria#ANNOTATION_MAXSPEED}
13931395
* {@link DirectionsCriteria#ANNOTATION_CLOSURE}
1396+
* {@link DirectionsCriteria#ANNOTATION_TRAFFIC_TENDENCY}
13941397
* See the {@link RouteLeg} object for more details on what is included with annotations.
13951398
* <p>
13961399
* Must be used in conjunction with {@link DirectionsCriteria#OVERVIEW_FULL}
@@ -1412,6 +1415,7 @@ public abstract Builder overview(
14121415
* {@link DirectionsCriteria#ANNOTATION_CONGESTION_NUMERIC}
14131416
* {@link DirectionsCriteria#ANNOTATION_MAXSPEED}
14141417
* {@link DirectionsCriteria#ANNOTATION_CLOSURE}
1418+
* {@link DirectionsCriteria#ANNOTATION_TRAFFIC_TENDENCY}
14151419
* See the {@link RouteLeg} object for more details on what is included with annotations.
14161420
* <p>
14171421
* Must be used in conjunction with {@link DirectionsCriteria#OVERVIEW_FULL}

services-directions-refresh-models/src/test/java/com.mapbox.api.directionsrefresh.v1.models/DirectionsRefreshResponseTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public void testSerialization() throws IOException {
3838
assertNotNull(directionsRefreshResponse.route().legs().get(0).annotation());
3939
assertTrue(directionsRefreshResponse.route().legs().get(0).annotation().congestion().size() > 0);
4040
assertTrue(directionsRefreshResponse.route().legs().get(0).incidents().size() > 0);
41+
assertTrue(directionsRefreshResponse.route().legs().get(0).annotation().trafficTendency().size() > 0);
4142
}
4243

4344
@Test

services-directions-refresh-models/src/test/java/com.mapbox.api.directionsrefresh.v1.models/DirectionsRouteRefreshTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public void testSerialization() throws IOException {
3535
assertNotNull(directionsRouteRefresh.legs().get(0).annotation().congestion());
3636
assertNotNull(directionsRouteRefresh.legs().get(0).incidents());
3737
assertTrue(directionsRouteRefresh.legs().get(0).incidents().size() > 0);
38+
assertTrue(directionsRouteRefresh.legs().get(0).annotation().trafficTendency().size() > 0);
3839
}
3940

4041
@Test

services-directions-refresh-models/src/test/java/com.mapbox.api.directionsrefresh.v1.models/RouteLegRefreshTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotNull;
55

6+
import com.mapbox.api.directions.v5.DirectionsCriteria;
67
import com.mapbox.api.directions.v5.models.Congestion;
78
import com.mapbox.api.directions.v5.models.Incident;
89
import com.mapbox.api.directions.v5.models.LegAnnotation;
@@ -70,6 +71,14 @@ public void fromJson() {
7071
0.1,
7172
10.2
7273
);
74+
List<Integer> trafficTendency = Arrays.asList(
75+
DirectionsCriteria.TRAFFIC_TENDENCY_UNKNOWN,
76+
DirectionsCriteria.TRAFFIC_TENDENCY_CONSTANT_CONGESTION,
77+
DirectionsCriteria.TRAFFIC_TENDENCY_INCREASING_CONGESTION,
78+
DirectionsCriteria.TRAFFIC_TENDENCY_DECREASING_CONGESTION,
79+
DirectionsCriteria.TRAFFIC_TENDENCY_RAPIDLY_INCREASING_CONGESTION,
80+
DirectionsCriteria.TRAFFIC_TENDENCY_RAPIDLY_DECREASING_CONGESTION
81+
);
7382

7483
List<Incident> incidents = Arrays.asList(
7584
Incident.builder()
@@ -110,6 +119,7 @@ public void fromJson() {
110119
.duration(durations)
111120
.maxspeed(maxSpeeds)
112121
.speed(speeds)
122+
.trafficTendency(trafficTendency)
113123
.build()
114124
)
115125
.incidents(incidents)
@@ -123,4 +133,22 @@ public void fromJson() {
123133
assertEquals(routeLegRefresh, fromJson);
124134
}
125135

136+
@Test
137+
public void trafficTendencyFromJson() {
138+
String json = "{\"traffic_tendency\": [0,1,2,3,4,5]}";
139+
LegAnnotation expectedAnnotations = LegAnnotation.builder()
140+
.trafficTendency(Arrays.asList(
141+
DirectionsCriteria.TRAFFIC_TENDENCY_UNKNOWN,
142+
DirectionsCriteria.TRAFFIC_TENDENCY_CONSTANT_CONGESTION,
143+
DirectionsCriteria.TRAFFIC_TENDENCY_INCREASING_CONGESTION,
144+
DirectionsCriteria.TRAFFIC_TENDENCY_DECREASING_CONGESTION,
145+
DirectionsCriteria.TRAFFIC_TENDENCY_RAPIDLY_INCREASING_CONGESTION,
146+
DirectionsCriteria.TRAFFIC_TENDENCY_RAPIDLY_DECREASING_CONGESTION
147+
))
148+
.build();
149+
150+
LegAnnotation fromJson = LegAnnotation.fromJson(json);
151+
152+
assertEquals(expectedAnnotations, fromJson);
153+
}
126154
}

0 commit comments

Comments
 (0)