限制自动完成搜索到一个特定的国家在谷歌地点Android API



我的目标是将来自Google Places Android API的自动补全结果仅限制为特定国家(美国)。

我正在使用以下API:

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

看起来latlnbounds应该做这项工作。

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

  2. 您使用哪个来源获得一个国家的LatLngBounds ?

  3. latlnbounds是一个矩形-因此它也可以在结果中包含其他国家。那又如何呢?

  4. 有更好的方法吗?

从Google Play Services v9.6开始,您现在可以为您的自动完成建议设置国家过滤器。请确保您的游戏服务版本至少是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'代码更改国家代码

如果你使用的是PlaceAutocompleteFragment你可以这样设置:

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
                        .setTypeFilter(Place.TYPE_COUNTRY)
                        .setCountry("US")
                        .build();
mAutocompleteFragment.setFilter(autocompleteFilter);

latlnbounds构造函数的方法定义如下:

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 &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类型

您可以使用链接中提到的类型按国家,地区和各种其他类型进行限制。

希望有帮助!!

p。S:如果有人能回答如何限制在特定国家使用游戏服务API的边界,那就太棒了!!

对于新的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();

或者直接使用:

yourFragment.setCountry("Country Alpha 2 code");

    val autocompleteFragment =
        supportFragmentManager.findFragmentById(R.id.autocomplete_fragment) as AutocompleteSupportFragment?
    // Specify the types of place data to return.
    autocompleteFragment!!
        .setPlaceFields(listOf(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG))
        .setCountry("UG")

相关内容

  • 没有找到相关文章

最新更新