我希望我的用户能够选择一个地址。对于我的后端,我需要获取以下信息:街道名称,号码,国家和邮政编码。
我正在使用此处提到的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()
来获得人类可读的"地址线。
iOs和JS文档都显示您可以从addressComponents
对象中检索address_components
(iOs)或Place
(JS)这些领域(街道,邮政编码等)。但是,Android文档没有显示Place
对象检索addressComponents
的方法。
我忽略了什么吗?是否有可能他们提供iOs和JS的这些信息,但不是为Android?或者我也可能错过了一个明显的替代方案?
答案 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);