Skip to content

Commit 97ca334

Browse files
Geocoding V6 Support (#1577)
* V6 preview * V6 full support * Code review * Adding V6FeatureType.SECONDARY_ADDRESS & address_line1 * Adding name_preferred, full_address and bbox to V6Properties * Adding coordinates.routable_points * Adding V6ContextAddress * Updating java docs --------- Co-authored-by: Dzmitry Fomchyn <[email protected]> Co-authored-by: dzmitryfomchyn <[email protected]>
1 parent ed56be1 commit 97ca334

File tree

52 files changed

+4592
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+4592
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.mapbox.samples;
2+
3+
import com.mapbox.api.geocoding.v6.MapboxV6BatchGeocoding;
4+
import com.mapbox.api.geocoding.v6.V6RequestOptions;
5+
import com.mapbox.api.geocoding.v6.V6StructuredInputQuery;
6+
import com.mapbox.api.geocoding.v6.V6ForwardGeocodingRequestOptions;
7+
import com.mapbox.api.geocoding.v6.models.V6BatchResponse;
8+
import com.mapbox.api.geocoding.v6.models.V6Feature;
9+
import com.mapbox.api.geocoding.v6.models.V6FeatureType;
10+
import com.mapbox.api.geocoding.v6.models.V6Response;
11+
import com.mapbox.api.geocoding.v6.V6ReverseGeocodingRequestOptions;
12+
import com.mapbox.geojson.BoundingBox;
13+
import com.mapbox.geojson.Point;
14+
import com.mapbox.sample.BuildConfig;
15+
16+
import java.util.Arrays;
17+
import java.util.List;
18+
import java.util.stream.Collectors;
19+
20+
import retrofit2.Call;
21+
import retrofit2.Callback;
22+
import retrofit2.Response;
23+
24+
public class BasicV6BatchGeocoding {
25+
26+
private static List<V6RequestOptions> requestOptions() {
27+
final V6ForwardGeocodingRequestOptions forwardOptions = V6ForwardGeocodingRequestOptions
28+
.builder("1600 Pennsylvania Avenue NW, Washington, DC 20500, United States")
29+
.types(V6FeatureType.ADDRESS)
30+
.limit(1)
31+
.boundingBox(BoundingBox.fromLngLats(-80, 35, -70, 40))
32+
.build();
33+
34+
final V6StructuredInputQuery structuredInputQuery = V6StructuredInputQuery.builder()
35+
.addressNumber("1600")
36+
.street("Pennsylvania Avenue NW")
37+
.postcode("20500")
38+
.place("Washington, DC")
39+
.build();
40+
41+
final V6ForwardGeocodingRequestOptions structuredInputOptions = V6ForwardGeocodingRequestOptions
42+
.builder(structuredInputQuery)
43+
.country("us")
44+
.build();
45+
46+
final V6ReverseGeocodingRequestOptions reverseOptions = V6ReverseGeocodingRequestOptions
47+
.builder(Point.fromLngLat(-73.986136, 40.748895))
48+
.types(V6FeatureType.ADDRESS)
49+
.build();
50+
51+
return Arrays.asList(forwardOptions, structuredInputOptions, reverseOptions);
52+
}
53+
54+
public static void main(String[] args) {
55+
final MapboxV6BatchGeocoding geocoding = MapboxV6BatchGeocoding
56+
.builder(
57+
BuildConfig.MAPBOX_ACCESS_TOKEN,
58+
requestOptions()
59+
)
60+
.build();
61+
62+
geocoding.enqueueCall(new Callback<V6BatchResponse>() {
63+
@Override
64+
public void onResponse(Call<V6BatchResponse> call, Response<V6BatchResponse> response) {
65+
System.out.println("Response code: " + response.code());
66+
System.out.println("Response message: " + response.message());
67+
68+
final V6BatchResponse body = response.body();
69+
if (body == null) {
70+
System.out.println("Response body is null");
71+
return;
72+
}
73+
74+
System.out.println("Number of responses: " + body.responses().size());
75+
76+
for (V6Response v6Response : body.responses()) {
77+
System.out.println("Number of results: " + v6Response.features().size());
78+
79+
final String results = v6Response.features().stream()
80+
.map(V6Feature::toString)
81+
.collect(Collectors.joining(", \n"));
82+
83+
System.out.println("Features: " + results);
84+
}
85+
}
86+
87+
@Override
88+
public void onFailure(Call<V6BatchResponse> call, Throwable t) {
89+
System.out.println(t);
90+
}
91+
});
92+
}
93+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.mapbox.samples;
2+
3+
import com.mapbox.api.geocoding.v6.MapboxV6Geocoding;
4+
import com.mapbox.api.geocoding.v6.V6ForwardGeocodingRequestOptions;
5+
import com.mapbox.api.geocoding.v6.models.V6Response;
6+
import com.mapbox.api.geocoding.v6.models.V6Feature;
7+
import com.mapbox.api.geocoding.v6.models.V6FeatureType;
8+
import com.mapbox.sample.BuildConfig;
9+
10+
import java.util.stream.Collectors;
11+
12+
import retrofit2.Call;
13+
import retrofit2.Callback;
14+
import retrofit2.Response;
15+
16+
public class BasicV6ForwardGeocoding {
17+
18+
public static void main(String[] args) {
19+
final V6ForwardGeocodingRequestOptions requestOptions = V6ForwardGeocodingRequestOptions
20+
.builder("740 15th St NW, Washington, DC 20005")
21+
.types(V6FeatureType.ADDRESS)
22+
.build();
23+
24+
final MapboxV6Geocoding geocoding = MapboxV6Geocoding
25+
.builder(BuildConfig.MAPBOX_ACCESS_TOKEN, requestOptions)
26+
.build();
27+
28+
geocoding.enqueueCall(new Callback<V6Response>() {
29+
@Override
30+
public void onResponse(Call<V6Response> call, Response<V6Response> response) {
31+
final V6Response body = response.body();
32+
if (body == null) {
33+
System.out.println("Response body is null");
34+
return;
35+
}
36+
37+
System.out.println("Number of results: " + body.features().size());
38+
39+
final String results = body.features().stream()
40+
.map(V6Feature::toString)
41+
.collect(Collectors.joining(", \n"));
42+
43+
System.out.println("Features: " + results);
44+
}
45+
46+
@Override
47+
public void onFailure(Call<V6Response> call, Throwable t) {
48+
System.out.println(t);
49+
}
50+
});
51+
}
52+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.mapbox.samples;
2+
3+
import com.mapbox.api.geocoding.v6.MapboxV6Geocoding;
4+
import com.mapbox.api.geocoding.v6.models.V6Feature;
5+
import com.mapbox.api.geocoding.v6.models.V6Response;
6+
import com.mapbox.api.geocoding.v6.V6ReverseGeocodingRequestOptions;
7+
import com.mapbox.geojson.Point;
8+
import com.mapbox.sample.BuildConfig;
9+
10+
import java.util.stream.Collectors;
11+
12+
import retrofit2.Call;
13+
import retrofit2.Callback;
14+
import retrofit2.Response;
15+
16+
public class BasicV6ReverseGeocoding {
17+
18+
public static void main(String[] args) {
19+
final V6ReverseGeocodingRequestOptions requestOptions = V6ReverseGeocodingRequestOptions
20+
.builder(Point.fromLngLat(-77.03397315668123, 38.89991317162873))
21+
.build();
22+
23+
final MapboxV6Geocoding geocoding = MapboxV6Geocoding
24+
.builder(BuildConfig.MAPBOX_ACCESS_TOKEN, requestOptions)
25+
.build();
26+
27+
geocoding.enqueueCall(new Callback<V6Response>() {
28+
@Override
29+
public void onResponse(Call<V6Response> call, Response<V6Response> response) {
30+
final V6Response body = response.body();
31+
if (body == null) {
32+
System.out.println("Response body is null");
33+
return;
34+
}
35+
36+
System.out.println("Number of results: " + body.features().size());
37+
38+
final String results = body.features().stream()
39+
.map(V6Feature::toString)
40+
.collect(Collectors.joining(", \n"));
41+
42+
System.out.println("Features: " + results);
43+
}
44+
45+
@Override
46+
public void onFailure(Call<V6Response> call, Throwable t) {
47+
System.out.println(t);
48+
}
49+
});
50+
}
51+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.mapbox.samples;
2+
3+
import com.mapbox.api.geocoding.v6.V6StructuredInputQuery;
4+
import com.mapbox.api.geocoding.v6.MapboxV6Geocoding;
5+
import com.mapbox.api.geocoding.v6.V6ForwardGeocodingRequestOptions;
6+
import com.mapbox.api.geocoding.v6.models.V6Feature;
7+
import com.mapbox.api.geocoding.v6.models.V6FeatureType;
8+
import com.mapbox.api.geocoding.v6.models.V6Response;
9+
import com.mapbox.sample.BuildConfig;
10+
11+
import java.util.stream.Collectors;
12+
13+
import retrofit2.Call;
14+
import retrofit2.Callback;
15+
import retrofit2.Response;
16+
17+
public class BasicV6StructuredInputForwardGeocoding {
18+
19+
public static void main(String[] args) {
20+
final V6StructuredInputQuery query = V6StructuredInputQuery.builder()
21+
.addressNumber("740")
22+
.street("15th St")
23+
.place("Washington")
24+
.postcode("20005")
25+
.build();
26+
27+
final V6ForwardGeocodingRequestOptions requestOptions = V6ForwardGeocodingRequestOptions
28+
.builder(query)
29+
.country("United States")
30+
.types(V6FeatureType.ADDRESS)
31+
.autocomplete(false)
32+
.build();
33+
34+
final MapboxV6Geocoding geocoding = MapboxV6Geocoding
35+
.builder(BuildConfig.MAPBOX_ACCESS_TOKEN, requestOptions)
36+
.build();
37+
38+
geocoding.enqueueCall(new Callback<V6Response>() {
39+
@Override
40+
public void onResponse(Call<V6Response> call, Response<V6Response> response) {
41+
final V6Response body = response.body();
42+
if (body == null) {
43+
System.out.println("Response body is null");
44+
return;
45+
}
46+
47+
System.out.println("Number of results: " + body.features().size());
48+
49+
final String results = body.features().stream()
50+
.map(V6Feature::toString)
51+
.collect(Collectors.joining(", \n"));
52+
53+
System.out.println("Features: " + results);
54+
}
55+
56+
@Override
57+
public void onFailure(Call<V6Response> call, Throwable t) {
58+
System.out.println(t);
59+
}
60+
});
61+
}
62+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.mapbox.api.geocoding.v6;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.annotation.Nullable;
5+
6+
import com.mapbox.core.MapboxService;
7+
8+
/**
9+
* Base class for entry points to Mapbox V6 geocoding: forward geocoding, reverse geocoding
10+
* and batch geocoding. See derived classes for more information.
11+
* @param <T> response type.
12+
*/
13+
public abstract class MapboxV6BaseGeocoding<T> extends MapboxService<T, V6GeocodingService> {
14+
15+
@NonNull
16+
protected abstract String accessToken();
17+
18+
@Nullable
19+
protected abstract Boolean permanent();
20+
21+
@Nullable
22+
protected abstract String clientAppName();
23+
24+
@NonNull
25+
@Override
26+
protected abstract String baseUrl();
27+
28+
protected MapboxV6BaseGeocoding() {
29+
super(V6GeocodingService.class);
30+
}
31+
32+
/**
33+
* Base class for Mapbox V6 Geocoding Builders.
34+
* @param <T> type of Builder
35+
*/
36+
public abstract static class BaseBuilder<T> {
37+
38+
protected abstract T accessToken(@NonNull String accessToken);
39+
40+
/**
41+
* Specify whether you intend to store the results of the query. Backend default is false.
42+
*
43+
* @param permanent specify whether you intend to store the results
44+
* @return this builder for chaining options together
45+
*
46+
* @see <a href="https://docs.mapbox.com/api/search/geocoding/#storing-geocoding-results">Storing Geocoding Results</a>
47+
*/
48+
public abstract T permanent(@NonNull Boolean permanent);
49+
50+
/**
51+
* Base package name or other simple string identifier. Used inside the calls user agent header.
52+
*
53+
* @param clientAppName base package name or other simple string identifier
54+
* @return this builder for chaining options together
55+
*/
56+
public abstract T clientAppName(@NonNull String clientAppName);
57+
58+
/**
59+
* Optionally change the APIs base URL to something other then the default Mapbox one.
60+
*
61+
* @param baseUrl base url used as end point
62+
* @return this builder for chaining options together
63+
*/
64+
public abstract T baseUrl(@NonNull String baseUrl);
65+
}
66+
}

0 commit comments

Comments
 (0)