如何从Place API对象中检索地址组件?

时间:2018-01-15 17:58:28

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

我希望我的用户能够选择一个地址。对于我的后端,我需要获取以下信息:街道名称,号码,国家和邮政编码。

我正在使用此处提到的PlaceAutocompleteFragment片段:https://developers.google.com/places/android-api/autocomplete

当用户选择了一个地方时,我得到了Place个对象:

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
    @Override
    public void onPlaceSelected(Place place) {
        // Here I want to retrieve all the address details, such as
        // street name, number, country etc. and send them to my backend
    }

    @Override
    public void onError(Status status) {
        //handle Error
    }
});

然而,从Place对象我只能使用place.getAddress()来获得人类可读的"地址线。

iOsJS文档都显示您可以从addressComponents对象中检索address_components(iOs)或Place(JS)这些领域(街道,邮政编码等)。但是,Android文档没有显示Place对象检索addressComponents的方法。

我忽略了什么吗?是否有可能他们提供iOs和JS的这些信息,但不是为Android?或者我也可能错过了一个明显的替代方案?

2 个答案:

答案 0 :(得分:0)

您需要设置所需的搜索参数。

autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ADDRESS,Place.Field.LAT_LNG));

答案 1 :(得分:0)

在Place对象中有一个getAddressComponents()。

请确保在“字段”列表中添加“ Place.Field.ADDRESS”,onActivityResultresults数据将具有该地点的组成部分,否则将为null。

List<Place.Field> fieldList = Arrays.asList(Place.Field.ADDRESS,
            Place.Field.ADDRESS_COMPONENTS,
            Place.Field.LAT_LNG, Place.Field.NAME, Place.Field.UTC_OFFSET);
    Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY
            , fieldList)
            .build(context);