android - 在 Places API 的 fetchPlace() 中在哪里设置 session token ?

标签 android maps google-places-api google-places googleplacesautocomplete

我正在使用自定义 Activity 在 Google Places API 上发出自动完成请求。

我们在示例中使用相同的代码: 在我的适配器中:

  // Use the builder to create a FindAutocompletePredictionsRequest.
    FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder()
            // Call either setLocationBias() OR setLocationRestriction().
            // .setLocationBias(bounds)
            .setLocationBias(mBounds)
            .setCountry("br")
            //   .setTypeFilter(TypeFilter.ADDRESS)
            .setSessionToken(session)
            .setQuery(constraint.toString())
            .build();

但是我要去哪里获取某个地方的详细信息:

 List<Place.Field> placeFields = Arrays.asList(Place.Field.LAT_LNG);
        FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
        //request.getSessionToken(); TEST TOKEN

        placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
            Place place = response.getPlace();
            returnResult(new LatLng(place.getLatLng().latitude, place.getLatLng().longitude), mResultList.get(position).primaryText.toString());
            //Log.i(TAG, "Place found: " + place.getName());
        }).addOnFailureListener((exception) -> {
            if (exception instanceof ApiException) {
                ApiException apiException = (ApiException) exception;
                int statusCode = apiException.getStatusCode();
                // Handle error with given status code.
                Log.e(TAG, "Place not found: " + exception.getMessage());
            }
        });

我做到了:

request.getSessionToken();

我得到了空 token ,我认为这导致了对 API 的许多查询。 在文档中说调用 fetchPlace() 时有必要再次传递 token ,但是在哪里?

最佳答案

您可以为 FetchPlaceRequest 设置 session token

List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG, Place.Field.ADDRESS);
        FetchPlaceRequest request = FetchPlaceRequest.builder(placeId, placeFields).setSessionToken(token).build();
        placesClient.fetchPlace(request).addOnSuccessListener(response -> {
            Log.d("LocationPickActvity", "AutocompleteSessionToken: "+request.getSessionToken());
            Place place = response.getPlace();
            clickListener.place(place);
        }).addOnFailureListener(exception -> {
            if (exception instanceof ApiException) {
                Toast.makeText(mContext, ""+exception.getMessage() + "", Toast.LENGTH_SHORT).show();
            }
        });

关于android - 在 Places API 的 fetchPlace() 中在哪里设置 session token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55848595/

相关文章:

android - Gradle 不遵守 Ivy 标准版本要求

google-maps - 获取城市中所有路口的列表

c++ - 无法创建以 vector 为键和自定义类为值的 map

c# - 如何在 Xamarin.Forms.Map 中获取当前位置或移动到当前位置

ios - Google Places 添加的地方未显示

javascript - Google 地方信息未使用 RouteBoxer 返回完整结果

google-maps - 搜索某个区域内的结果(国家、州、大城市)

java - 在Android中的按钮内左对齐文本

android - 在带有填充角的自定义按钮上添加点击效果

java - 以编程方式更改区域设置在 Android 6.0.1 上不起作用