gpt4 book ai didi

java - 如何获取 Android 中特定国家/州/政治部门的地址?

转载 作者:行者123 更新时间:2023-12-02 05:45:50 26 4
gpt4 key购买 nike

我正在开发一个使用 Google map API 的应用程序,用户设置一个地址,应用程序会找到与用户输入的地址匹配的不同且可能的地址,但我想要特定城市、州或省的地址如果可能的话,国家。

例如:我想找到地址“Washington Ave.”,Google map 找到一些地址:

  • “宾夕法尼亚州菲拉德尔菲亚华盛顿大道”
  • “路易斯安那州新奥尔良华盛顿大道”
  • “德克萨斯州休斯顿华盛顿大道”

但是,如果我只想要休斯顿城内的结果怎么办?还是宾夕法尼亚州?或者另一个国家?

我在Android Studio中有这段Java代码,它找到一个可能与字符串(用户编写的地址)匹配的地址,并且可能的选项只能显示5个,并且它返回用户编写的地址的纬度和经度用户

Geocoder geocoder = new Geocoder(this);
List<Address> addresses = new ArrayList<>();
addresses = geocoder.getFromLocationName("Manuel de la Peña y Peña 805-835, Bella Vista, 64410 Monterrey, N.L.", 5);
if(addresses.size() > 0) {
double latitude= addresses.get(0).getLatitude();
double longitude= addresses.get(0).getLongitude();
}

那么,如何在 Android 版 Google map API 中查找特定城市、州或国家/地区内的地址?

最佳答案

为了获取位于特定区域内的地址,您应该使用支持严格地址搜索范围的服务。目前,地点自动完成服务支持严格限制,您可以在 Android 版 Places SDK 中找到文档:

https://developers.google.com/places/android-sdk/autocomplete#get_place_predictions_programmatically

这个想法是创建一个与您感兴趣的城市或地区相匹配的矩形边界对象,并在搜索地址预测时使用严格的边界过滤器。

代码 fragment 如下。请注意构建预测请求时的 setLocationRestrictionsetCountry 过滤器

AutocompleteSessionToken token = AutocompleteSessionToken.newInstance();

// Create a RectangularBounds object for area you are interested in.
RectangularBounds bounds = RectangularBounds.newInstance(
new LatLng(-33.880490, 151.184363),
new LatLng(-33.858754, 151.229596));
// Use the builder to create a FindAutocompletePredictionsRequest.
FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder()
// Call setLocationRestriction() with bounds in order to restrict search to given area.
.setLocationRestriction(bounds)
.setCountry("au")
.setTypeFilter(TypeFilter.ADDRESS)
.setSessionToken(token)
.setQuery(query)
.build();

placesClient
.findAutocompletePredictions(request)
.addOnSuccessListener((response) -> {
for (AutocompletePrediction prediction : response.getAutocompletePredictions()) {
Log.i(TAG, prediction.getPlaceId());
Log.i(TAG, prediction.getPrimaryText(null).toString());
}
}).addOnFailureListener((exception) -> {
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
Log.e(TAG, "Place not found: " + apiException.getStatusCode());
}
});

有关更多详细信息,请查看适用于 Android 的 Places SDK 文档。

希望这会有所帮助!

关于java - 如何获取 Android 中特定国家/州/政治部门的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com