如何获得ploce.geodataapi.getautococtletepredections仅在边界内



我正在使用place.geodataapi for android,并且根据执行请求的设备的位置,我会获得不同的搜索结果。我需要结果始终位于边界内。我看不到在getautocompletepredictions请求中可以设置该设置的位置。我缺少什么吗?

我使用googleapiclient获得地址/放置自动完整建议,并通过以下方式将API放置:

Places.GeoDataApi.getAutocompletePredictions()

该方法需要一个googleapiclient对象,一个要自动完成的字符串和一个latlngbounds对象才能限制搜索范围。这就是我的用法的样子:

LatLngBounds bounds = new LatLngBounds(new LatLng(38.46572222050097, -107.75668023304138),new LatLng(39.913037779499035, -105.88929176695862));

GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .addApi(Places.GEO_DATA_API)
            .build();

PendingResult<AutocompletePredictionBuffer> results =
Places.GeoDataApi.getAutocompletePredictions(googleApiClient, "Starbucks", bounds, null);

使用中的版本:com.google.android.gms:Play-Services-Location:8.3.0

文档:https://developers.google.com/places/android/autocomplete

好消息。截至2018年4月,Google增加了可能在自动完成预测中处理界限的可能性。现在,您可以使用GeoDataClient类的getAutocompletePredictions()方法与boundsMode参数

public Task<AutocompletePredictionBufferResponse> getAutocompletePredictions (String query, LatLngBounds bounds, int boundsMode, AutocompleteFilter filter)

boundsmode - 如何处理边界参数。设置为严格的预测时,所提供的界限包含。如果设置为偏见预测会偏向提供的界限。如果边界为null,则此参数无效。

来源:https://developers.google.com/android/reference/com/google/android/android/gms/location/geodataclient

您可以将代码修改为类似的内容:

LatLngBounds bounds = new LatLngBounds(new LatLng(38.46572222050097, -107.75668023304138),new LatLng(39.913037779499035, -105.88929176695862));
GeoDataClient mGeoDataClient = Places.getGeoDataClient(getBaseContext());;
Task<AutocompletePredictionBufferResponse> results =
        mGeoDataClient.getAutocompletePredictions("Starbucks", bounds, GeoDataClient.BoundsMode.STRICT, null);
try {
    Tasks.await(results, 60, TimeUnit.SECONDS);
} catch (ExecutionException | InterruptedException | TimeoutException e) {
    e.printStackTrace();
}
try {
    AutocompletePredictionBufferResponse autocompletePredictions = results.getResult();
    Log.i(TAG, "Query completed. Received " + autocompletePredictions.getCount()
            + " predictions.");
    // Freeze the results immutable representation that can be stored safely.
    ArrayList<AutocompletePrediction> al = DataBufferUtils.freezeAndClose(autocompletePredictions);
    for (AutocompletePrediction p : al) {
        CharSequence cs = p.getFullText(new CharacterStyle() {
            @Override
            public void updateDrawState(TextPaint tp) {
            }
        });
        Log.i(TAG, cs.toString());
    }
} catch (RuntimeExecutionException e) {
    // If the query did not complete successfully return null
    Log.e(TAG, "Error getting autocomplete prediction API call", e);
}

我希望这会有所帮助!

我遇到了同样的问题。

不幸的是,没有办法使用Google Places API Android

获得特定范围的位置

但是,您仍然可以使用Google Places API Web Service

使用附近搜索。

文档此处:https://developers.google.com/places/web-service/search?hl=fr

然后,您应该能够在参数中设置界限,并在JSON响应中获取ploce 内部,如下所述:https://stackoverflow.com/a/32404701/5446285

相关内容

  • 没有找到相关文章

最新更新