3 回答

TA貢獻1820條經驗 獲得超10個贊
有點晚了,但如果它對任何人都有幫助,可以這樣做:
如果您只需要第一個結果
function handleGooglePlacesPress = results => {
const map = {
street_number: 'streetNumber',
route: 'streetName',
sublocality_level_1: 'city',
locality: 'city1',
administrative_area_level_1: 'state',
postal_code: 'postalCode',
country: 'country'
};
const brokenDownAddress = {};
results[0].address_components.forEach(component => {
brokenDownAddress[map[component.types[0]]] = component.long_name;
}
return brokenDownAddress;
}

TA貢獻1875條經驗 獲得超5個贊
您可以使用 for 循環并檢查types值,這是一個簡單的示例:
var add_comps = json['result']['address_components'];
for (var i = 0; i < add_comps.length; i++) {
if (add_comps[i]['types'] == 'street_number') {
console.log(i);
}
}

TA貢獻1873條經驗 獲得超9個贊
好的,所以我最終只是循環通過 details.address_components 來分配變量。我檢查了兩次城市,因為有時它被稱為“locality”,有時它被稱為“subLocality_level_1”,具體取決于我相信的國家:
function handleGooglePlacesPress(data,details){
var StreetNumber = null;
var StreetName = null;
var City = null;
var State = null;
var Country = null;
var PostalCode = null;
const addressComponents = details.address_components;
addressComponents.forEach(addressComponent => {
const addressType = addressComponent.types[0]
if(addressType == 'street_number'){
StreetNumber = addressComponent.long_name;
}
if(addressType == 'route'){
StreetName = addressComponent.long_name;
}
if(addressType == 'sublocality_level_1'){
City = addressComponent.long_name;
}
if(addressType == 'locality'){
City = addressComponent.long_name;
}
if(addressType == 'administrative_area_level_1'){
State = addressComponent.long_name
}
if(addressType == 'postal_code'){
PostalCode = addressComponent.long_name
}
if(addressType == 'country'){
Country = addressComponent.long_name
}
});
console.log(StreetNumber,StreetName,City,State,PostalCode,Country) //logs each address piece
添加回答
舉報