Получить объект Place из строкового адреса, по которому пользователь нажимает на карте - PullRequest
0 голосов
/ 06 июля 2019

Некоторый фон : у меня есть карта, на которой я позволяю пользователю щелкнуть и выбрать место .Затем я получаю адрес от того места, где они нажали.

Что я хочу сделать: Используя этот адрес, который является String, Я хочу получить деталиоб этом месте с помощью нового API Google Map Places.

Я пытаюсь сделать это с помощью приведенного ниже кода

//Make the Autocomplete request builder with the String address
FindAutocompletePredictionsRequest.Builder requestBuilder =
                    FindAutocompletePredictionsRequest.builder()
                            .setQuery(address)
                            .setTypeFilter(TypeFilter.ADDRESS);
placesClient = Places.createClient(getApplicationContext());

//Create the Autocomplete Task
Task<FindAutocompletePredictionsResponse> task =
                    placesClient.findAutocompletePredictions(requestBuilder.build());

task.addOnSuccessListener(new OnSuccessListener<FindAutocompletePredictionsResponse>() {
    @Override
    public void onSuccess(final FindAutocompletePredictionsResponse findAutocompletePredictionsResponse) {
        //Use the response to get a list of Predictions
        List<AutocompletePrediction> list = findAutocompletePredictionsResponse.getAutocompletePredictions();
            if (list.isEmpty() || list == null) {

            } else {
                //Get the first Autocomplete prediction and later, it's ID.
                AutocompletePrediction ap = list.get(0);
                //Provide a list of Place Fields that I want to retrieve.         
                List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.ADDRESS);

                //Make the request to fetch the place using the Place ID obtained from the Autocomplete prediction.
                FetchPlaceRequest request = FetchPlaceRequest.builder(ap.getPlaceId(), placeFields).build();
                placesClient = Places.createClient(getApplicationContext());

                //Using the Place ID from the Autocomplete prediction, make a request to fetch places.
                placesClient.fetchPlace(request).addOnSuccessListener(new OnSuccessListener<FetchPlaceResponse>() {
                    @Override
                    public void onSuccess(FetchPlaceResponse fetchPlaceResponse) {
                        //Use the response to get the Place Object
                        Place place = fetchPlaceResponse.getPlace();
                        //Display the results from the Place Object
                        displayResults("\n-----------------\nName: " + place.getName() + "\nAddress: " + place.getAddress());
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    //......
                });
            }
       }
});
task.addOnFailureListener(new OnFailureListener() {
    //......
});

Проблема : Проблема в том, что когда я делаю это и использую place.getName(), вместо отображения названия местоположения, как это должно быть, отображается первая часть адресакак номер улицы и название.Кроме того, другие поля, такие как номер телефона и часы работы, являются нулевыми.

Кто-нибудь знает, как я могу получить объект Place с адреса String?Получение информации о месте, где пользователь нажимает, является самой важной функцией моего приложения для Android.

Я использую новые Places API, поскольку Place Details и Place Picker сейчасосуждается.

...