我的目标是将Google Places Android API的自动填充结果仅限制在特定国家/地区(美国)。
我使用以下API:
PendingResult<AutocompletePredictionBuffer> results =
Places.GeoDataApi
.getAutocompletePredictions(mGoogleApiClient, constraint.toString(),
mBounds, mPlaceFilter);
看起来LatLngBounds应该完成这项工作。
如果是,那么美国的LatLngBounds值是多少?
您使用哪个来源获取国家/地区的LatLngBounds?
LatLngBounds是一个矩形 - 因此它也可以在结果中包含其他国家/地区。那个怎么样?
有更好的方法吗?
答案 0 :(得分:21)
从Google Play Services v9.6开始,您现在可以为自动填充建议设置国家/地区过滤器。请确保您的Play服务版本至少为v9.6
AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
.setTypeFilter(Place.TYPE_COUNTRY)
.setCountry("US")
.build();
Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
.setFilter(autocompleteFilter)
.build(this);
您可以使用ISO 'Aplha 2' Codes
更改国家/地区代码答案 1 :(得分:10)
如果您使用的是 PlaceAutocompleteFragment ,可以这样设置:
AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
.setTypeFilter(Place.TYPE_COUNTRY)
.setCountry("US")
.build();
mAutocompleteFragment.setFilter(autocompleteFilter);
答案 2 :(得分:7)
LatLngBounds构造函数方法定义如下所示:
LatLngBounds (LatLng southwest, LatLng northeast)
即。它需要两个LatLng值,一个用于边界的西南位置,另一个是边界的东北位置,矩形的另外两个点是平凡计算的。
If yes, then what are the values of LatLngBounds for United States?
我粗略猜测如果我没错,西南LatLng值 32.6393,-117.004304 对于美国,东北LatLng值 44.901184,-67.32254 。
Which source did you use to get LatLngBounds for a country?
我通常使用http://www.findlatitudeandlongitude.com/通过将标记放在所需的位置来检查这些LatLng值。
LatLngBounds is a rectange - so it can include other countries in the result as well. What about that?
是的,您是正确的,上面的边界将是纯矩形,并且不可能使用这些边界将结果限制为仅限于美国。
这是因为矩形[bounds]将使用两个Latlng点[SE&amp; NW]我们提供给建设者和其他两点将是平凡的计算。
Is there a better way to do it?
是的,您可以改用Google Places Web Service API。下面的教程解释了如何使用API http://codetheory.in/google-place-api-autocomplete-service-in-android-application/
您可以使用地址类型和地址组件以您希望的方式使用此API限制结果: https://developers.google.com/maps/documentation/geocoding/intro#Types
您可以使用链接中提到的类型按国家/地区,区域和其他各种类型进行限制。
希望它有所帮助!!
P.S:如果有人能够回答如何限制在Play Services API中使用Bounds到特定国家/地区,那将非常棒!!
答案 3 :(得分:0)
对于新的Place api 2019,您必须这样做
FindAutocompletePredictionsRequest request =
FindAutocompletePredictionsRequest.builder()
.setLocationBias(bounds)
.setCountry("au") //to set country only for e.g australia
.setTypeFilter(TypeFilter.ADDRESS)
.setSessionToken(token)
.setQuery(query)
.build();
答案 4 :(得分:0)
switch_mm_irqs_off
load_new_mm_cr3
finish_task_switch
smp_reschedule_interrupt
scheduler_ipi
irq_enter
rcu_irq_enter
rcu_nmi_enter
sched_ttwu_pending
答案 5 :(得分:0)
或者你可以使用:
yourFragment.setCountry("Country Aplha 2 code");