我正在努力构建一个以电子邮件形式发送的简单表单,并将使用Google的API作为地址字段。我已阅读了有关使用用户开始键入地址的自动完成部分,并推荐了一个。因此,如果我开始输入12 West,它会推荐并允许我选择12 Westmount Drive,Cayley,n2n 5h8,Alberta,Canada。从谷歌地图api提取信息
我想知道在后端,如果它有可能将此信息拆分成街道,城市,邮编,省和国家。这样,我可以在电子邮件中包含完整的地址,然后在单独的段落中使用街道和城市信息。
我正在努力构建一个以电子邮件形式发送的简单表单,并将使用Google的API作为地址字段。我已阅读了有关使用用户开始键入地址的自动完成部分,并推荐了一个。因此,如果我开始输入12 West,它会推荐并允许我选择12 Westmount Drive,Cayley,n2n 5h8,Alberta,Canada。从谷歌地图api提取信息
我想知道在后端,如果它有可能将此信息拆分成街道,城市,邮编,省和国家。这样,我可以在电子邮件中包含完整的地址,然后在单独的段落中使用街道和城市信息。
从Google返回的地址中提取特定字段是绝对有可能的。
假设您使用的是Places Autocomplete,您将有权访问PlaceResult对象。 PlaceResult对象将具有名为address_components
的属性,该属性是GeocoderAddressComponent对象的数组。
每个GeocoderAddressComponent都有一个types
数组,其中包含该组件的名称或多个名称(如果存在多种描述该名称的方式)。可以在here找到示例address_components
对象。
您可以遍历address_components
阵列中的所有元素,查找名称route
和sublocality
,这将分别为您提供街道和城市的单个值。
/*我假设你想填写你的表格后发送电子邮件是正确的?
我想保留此表单信息将信息收集到数据库中以供将来使用。然后你可以查询信息到发送表单。
下面是代码可以帮助您*/
为?(我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);
https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete-addressform – geocodezip