首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从formatted_address中获取GeocoderResult组件

从formatted_address中获取GeocoderResult组件
EN

Stack Overflow用户
提问于 2013-01-05 14:02:40
回答 1查看 938关注 0票数 1

GeocoderResult返回一个对象数组(我看到数组元素的数量从南极洲的1个到东京的16个)。数组中的每个对象都包含以下属性:

返回数组中的第一个对象似乎是最具描述性的物理地址(总是这样吗?),它包含的"formatted_address“似乎总是满足我的需要。问题是我不想要一个字符串,而是每个部分。

例如,典型的美国formatted_address可能如下所示:

  • 美国密歇根州范布伦
  • 美国MT 59072号国道244号高速公路,综合报告
  • 美国华盛顿州斯波坎西18大道24号

对于这三个formatted_addresses,我想得到以下内容:

代码语言:javascript
复制
{address:null, street: null, city:"Van Buren", state:"MI", zipcode: null, country:"USA"}
{address:null, street: "State Highway 244", city:"Roundup", state:"MT", zipcode: 59072, country:"USA"}
{address:24, street: "West 18th Avenue", city:"Spokane", state:"WA ", zipcode: 99203, country:"USA"}

我应该试着解析formatted_address吗?还是应该使用address_components,以某种方式提取我需要的部分?第二个解决方案看起来最好,看起来可能如下所示,但是处理类型数组和短/长名称会使它变得困难。

如果我调用getAddressParts(GeocoderResult.address_components).,下面的工作正常

代码语言:javascript
复制
function getProp(a,type,lng) {
    var j,rs;
    loop:
    for (var i = 0; i < a.length; i++) {
        for (var j = 0; j < a[i].types.length; j++) {
            if(a[i].types[j]==type) {
                rs=a[i][lng]
                break loop;
            }
        }
    }
    return rs;
}

function getAddressParts(a) {
    var o={};
    o.street_number=getProp(a,'street_number','long_name');
    o.route=getProp(a,'route','long_name'); //Street
    o.establishment=getProp(a,'establishment','long_name'); //Used for parks and the like
    o.locality=getProp(a,'locality','long_name');   //City
    if(!o.locality){o.locality=getProp(a,'sublocality','long_name');}   //Some city not available, use this one (needed for in lake michigan)?
    if(!o.locality){o.locality=getProp(a,'administrative_area_level_2','long_name');}   //Some city not available, use this one (needed for in lake michigan)?
    o.administrative_area_level_1=getProp(a,'administrative_area_level_1','short_name');    //State
    o.country=getProp(a,'country','short_name')+'A';    //A is for usA, and is just being used for testing
    o.postal_code=getProp(a,'postal_code','long_name');
    return o;
}
EN

回答 1

Stack Overflow用户

发布于 2013-01-05 15:22:11

我建议使用address_components。在formatted_address中,您将不知道哪个路径表示哪个管理级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14172487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档