fro*_*die 8 parsing geocoding google-maps-api-3
我使用谷歌地图API对地址进行地理编码,我需要在不同的字段中获取街道地址,城市,州和邮政编码.根据结果中返回的地址组件类型的文档,这是我的代码:
var address = "";
var city = "";
var state = "";
var zip = "";
geocoder.geocode( { 'address': inputAddress}, function(results, status){
if (status==google.maps.GeocoderStatus.OK){
// loop through to get address, city, state, zip
$.each(results[0].address_components, function(){
switch(this.types[0]){
case "postal_code":
zip = this.short_name;
break;
case "street_address":
address = this.short_name;
break;
case "administrative_area_level_1":
state = this.short_name;
break;
case "locality":
city = this.short_name;
break;
}
});
} else{ alert("Invalid Address"); }
});
Run Code Online (Sandbox Code Playgroud)
但是,当我输入地址时,似乎没有返回"street_address"; 相反,它作为单独的字段返回,通常是"street_number"和"route",偶尔还有其他字段(例如apt号码的"subpremise").请参阅文档中的地理编码结果示例.
如何获取包含与街道地址相关的任何字段的地址变量?对于文档中的示例,我想要"1600 Ampitheatre Parkway".
根据文档,street_address它是一个地址类型,但这并不一定意味着它是一种地址组件类型- 它可能只是用于数组的标签- 与数组types中的每个对象一起返回:results
\n\n\n\n
types[]返回结果中的数组表示地址类型。这些类型也可以在数组中返回address_components[]以指示特定地址组件的类型。
您可能应该做的是首先遍历数组并找到数组中results包含 a 的数组。然后使用该对象获取属性(如 Aper\xc3\xa7u 提到的)。正如文档所述:“这是一个包含该位置的人类可读地址的字符串”。当is时,等于 a (后跟任何其他可用的值)。因此,您可以使用字符串来获取您需要的组件 - 或者使用数组中该特定对象的数组来获取您需要的组件(当然,这样做您需要自己连接 和-所以需要添加逻辑)。street_addresstypesformatted_addressformatted_addresstypestreet_addressformatted_addressstreet_number + routeaddress_componentssplit(\',\')formatted_addressaddress_componentsresultsstreet_numberroute
| 归档时间: |
|
| 查看次数: |
8190 次 |
| 最近记录: |