android-GeoDataApi.getAutocompletePredictions()中LatLngBounds的用途是什么?
作者:互联网
Google Places Autocomplete API中使用的LatLngBounds对象是什么?
..和/或它的意思是:
biasing the results to a specific area specified by latitude and longitude bounds
?
在Google地方信息自动填充文档中,它表示要传入LatLngBounds和AutocompleteFilter.
PendingResult<AutocompletePredictionBuffer> result =
Places.GeoDataApi.getAutocompletePredictions(
mGoogleApiClient, query, bounds, autocompleteFilter);
在使用“地方信息自动填充”功能后,我可以看到AutocompleteFilter如何限制结果(例如按国家/地区).还不清楚如何使用LatLngBounds.在示例代码中,Bounds对象具有以下内容:
private static final LatLngBounds BOUNDS_MOUNTAIN_VIEW =
new LatLngBounds(
new LatLng(37.398160, -122.180831),
new LatLng(37.430610, -121.972090));
它说的范围是Mountain View(加利福尼亚州旧金山湾区的一个城市),但是当filter为null时,我仍然可以获得其他国家/地区的结果.
从此资源:
https://developers.google.com/places/android-api/autocomplete
Your app can get a list of predicted place names and/or addresses from the autocomplete service by calling GeoDataApi.getAutocompletePredictions(), passing the following parameters:
Required: A LatLngBounds object, biasing the results to a specific area specified by latitude and longitude bounds.
Optional: An AutocompleteFilter containing a set of place types, which you can use to restrict the results to one or more types of place.
解决方法:
假设您要搜索Cafe The Coffee Day,如果您设置LatLngBounds,则结果将根据该位置显示.
例如,如果您在纽约设置LatLngBounds并搜索“咖啡馆咖啡日”,则会看到纽约的结果.如果设置悉尼的LatLngBounds,您将看到悉尼的结果.
现在,如果要将LatLngBounds设置为您的位置,则必须获取当前位置并根据该位置设置LatLngBounds.
您也可以指定半径以获得特定结果.
例如.
我正在使用下面的代码来获取当前城市的结果.
protected GoogleApiClient mGoogleApiClient;
private PlaceAutocompleteAdapter mAdapter;
AutoCompleteTextView autoTextViewPlace;
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addApi(Places.GEO_DATA_API)
.build();
// I am getting Latitude and Longitude From Web API
if((strLatitude != null && !strLatitude.trim().isEmpty()) && (strLongitude != null && !strLongitude.trim().isEmpty())){
LatLng currentLatLng = new LatLng(Double.parseDouble(strLatitude), Double.parseDouble(strLongitude));
if(currentLatLng != null){
setLatlngBounds(currentLatLng);
}
}
public void setLatlngBounds(LatLng center){
double radiusDegrees = 0.10;
LatLng northEast = new LatLng(center.latitude + radiusDegrees, center.longitude + radiusDegrees);
LatLng southWest = new LatLng(center.latitude - radiusDegrees, center.longitude - radiusDegrees);
LatLngBounds bounds = LatLngBounds.builder().include(northEast).include(southWest).build();
mAdapter = new PlaceAutocompleteAdapter(getActivity(), mGoogleApiClient, bounds,
null);
autoTextViewPlace.setAdapter(mAdapter);
}
标签:google-places-api,android 来源: https://codeday.me/bug/20191026/1936786.html