首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取address_components

获取address_components
EN

Stack Overflow用户
提问于 2012-11-25 21:45:48
回答 7查看 27.9K关注 0票数 11

我正在使用google places API进行地理编码。我有一个地址组件类型的问题。

我想要获取有关用户在autocomplete中键入的地址的信息,格式如下:

街道号码/街道/城市/省/国家。

如果用户自动完成“Street12,SomeCity,SomeProvince,SomeCountry",我希望返回所有这些信息。但是当用户只输入"someProvince,SomeCountry“时,我希望只有省和国家地址类型。

下面是我的代码:

代码语言:javascript
复制
google.maps.event.addListener(autocomplete, 'place_changed', function () {
    var place = autocomplete.getPlace();
    alert('0: ' + place.address_components[0].long_name);
    alert('1: ' + place.address_components[1].long_name);
    alert('2: ' + place.address_components[2].long_name);
    alert('3: ' + place.address_components[3].long_name);
    alert('4: ' + place.address_components[4].long_name);
    alert('5: ' + place.address_components[5].long_name);
    alert('6: ' + place.address_components[6].long_name);
    alert('7: ' + place.address_components[7].long_name);
)};

问题是,当用户自动完成完整地址时,它会正确显示所有这些警报。但是,当自动完成只有一部分信息时-仅国家-它将显示输入国家的7倍。

http://gmaps-samples-v3.googlecode.com/svn/trunk/places/autocomplete-addressform.html

我想有,当街道和城市没有给出,它将显示警报(“街道是空的”等)。该怎么做呢?

EN

回答 7

Stack Overflow用户

发布于 2014-08-05 22:53:09

为一个项目做了这个功能。它会解析

  • street
  • number
  • country
  • zip
  • city

来自google地理响应

代码语言:javascript
复制
function parseGoogleResponse(components) {
    _.each(components, function(component) {
      _.each(component.types, function(type) {
        if (type === 'route') {
          $("input[name=street]").val(component.long_name)
        }
        if (type === 'street_number') {
          $("input[name=nr]").val(component.long_name)
        }
        if (type === 'locality') {
          $("input[name=city]").val(component.long_name)
        }
        if (type === 'country') {
          $("input[name=country]").val(component.long_name)
        }
        if (type === 'postal_code') {
          $("input[name=zip]").val(component.long_name)
        }
      })
    })
  }
票数 12
EN

Stack Overflow用户

发布于 2016-05-20 06:07:36

Address Types and Address Component Types

使用这些类型并将它们映射到您的地址字段。请记住,根据上下文,市、县、州等可能具有不同的含义。例如,North Hollywood提供了neighborhood类型,因为它位于洛杉矶(‘locality’)。

代码语言:javascript
复制
function placeToAddress(place){
        var address = {};
        place.address_components.forEach(function(c) {
            switch(c.types[0]){
                case 'street_number':
                    address.StreetNumber = c;
                    break;
                case 'route':
                    address.StreetName = c;
                    break;
                case 'neighborhood': case 'locality':    // North Hollywood or Los Angeles?
                    address.City = c;
                    break;
                case 'administrative_area_level_1':     //  Note some countries don't have states
                    address.State = c;
                    break;
                case 'postal_code':
                    address.Zip = c;
                    break;
                case 'country':
                    address.Country = c;
                    break;
                /*
                *   . . . 
                */
            }
        });

        return address;
    }
票数 11
EN

Stack Overflow用户

发布于 2012-12-07 13:18:17

根据demo,您需要检查每个返回的地址组件,以查看是否返回了街道/城市:

代码语言:javascript
复制
google.maps.event.addListener(autocomplete, 'place_changed', function() {
    var place = autocomplete.getPlace();
    var components = place.address_components;
    var street = null;
    for (var i = 0, component; component = components[i]; i++) {
        console.log(component);
        if (component.types[0] == 'route') {
            street = component['long_name'];
        }
    }
    alert('Street: ' + street);
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13551593

复制
相关文章

相似问题

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