2017-09-19 175 views
-1

我正在努力构建一个以电子邮件形式发送的简单表单,并将使用Google的API作为地址字段。我已阅读了有关使用用户开始键入地址的自动完成部分,并推荐了一个。因此,如果我开始输入12 West,它会推荐并允许我选择12 Westmount Drive,Cayley,n2n 5h8,Alberta,Canada。从谷歌地图api提取信息

我想知道在后端,如果它有可能将此信息拆分成街道,城市,邮编,省和国家。这样,我可以在电子邮件中包含完整的地址,然后在单独的段落中使用街道和城市信息。

+0

https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete-addressform – geocodezip

回答

2

从Google返回的地址中提取特定字段是绝对有可能的。

假设您使用的是Places Autocomplete,您将有权访问PlaceResult对象。 PlaceResult对象将具有名为address_components的属性,该属性是GeocoderAddressComponent对象的数组。

每个GeocoderAddressComponent都有一个types数组,其中包含该组件的名称或多个名称(如果存在多种描述该名称的方式)。可以在here找到示例address_components对象。

您可以遍历address_components阵列中的所有元素,查找名称routesublocality,这将分别为您提供街道和城市的单个值。

0

/*我假设你想填写你的表格后发送电子邮件是正确的?

我想保留此表单信息将信息收集到数据库中以供将来使用。然后你可以查询信息到发送表单。

下面是代码可以帮助您*/

为?(我VAR = 0;我< place.address_components.length;我++){

var addressType = place.address_components[i].types[0]; 

if (componentForm[addressType]) { 
    var val = place.address_components[i][componentForm[addressType]]; 
    document.getElementById(addressType).value = val; 

    your_obj[addresType] = val; 

} 

}

//之后,你可以在你不喜欢的地方使用它: var postal_code = your_obj ['postal_code'];

//检查第一个console.log()知道your_obj中的所有项目 console.log(your_obj);