有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从用户单击地图的字符串地址获取Place对象

一些背景: 我有一张地图,允许用户点击并选择一个地方。然后我从他们点击的地方得到地址

我想做什么:使用该地址,即String我想通过使用新的谷歌地图位置API获取该地点的详细信息

我正试图用下面的代码来实现这一点

//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()时,它会显示地址的第一部分,如街道号码和名称,而不是应该显示位置的名称。此外,电话号码和营业时间等其他字段为空

有人知道如何从String地址获取Place对象吗? 获取用户点击位置的详细信息是我的Android应用程序最重要的功能

我正在使用新的Places API,因为Place DetailsPlace Picker现在已被弃用


共 (0) 个答案