Где установить токен Session в fetchPlace () для API Places? - PullRequest
0 голосов
/ 25 апреля 2019

Я использую пользовательское действие для выполнения запросов автозаполнения в 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();

Я получил нулевой токен, я думаю, что это вызывает много запросов по API.В документации говорится, что необходимо передать токен снова при вызове fetchPlace () , но где?

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете установить токен сеанса для FetchPlaceRequest

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();
            }
        });
...