将自动填充搜索限制在Google Places Android API中的特定国家/地区

时间:2015-10-26 07:13:52

标签: android google-api google-places-api

我的目标是将Google Places Android API的自动填充结果仅限制在特定国家/地区(美国)。

我使用以下API:

        PendingResult<AutocompletePredictionBuffer> results =
                Places.GeoDataApi
                        .getAutocompletePredictions(mGoogleApiClient, constraint.toString(),
                                mBounds, mPlaceFilter);

看起来LatLngBounds应该完成这项工作。

  1. 如果是,那么美国的LatLngBounds值是多少?

  2. 您使用哪个来源获取国家/地区的LatLngBounds?

  3. LatLngBounds是一个矩形 - 因此它也可以在结果中包含其他国家/地区。那个怎么样?

  4. 有更好的方法吗?

6 个答案:

答案 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");