带地址的Google地理编码会返回一个结果

时间:2016-11-02 12:11:17

标签: google-maps google-geocoder

将现有地址作为参数的地理编码器仅返回street_address作为结果。为什么?地址有效。它已经在https://google-developers.appspot.com/maps/documentation/utils/geocoder/

进行了测试

我的电话:

   checkAddress(street, strNo, post_code, area, function (results) {
        if (results) { 
     $.each(results, function (i, address) {
    if (address.types[0] == "street_address") {
        itemStreetNo = address.address_components[0].long_name;
        itemStreet = address.address_components[1].long_name;
    }

    if (address.types[0] == "route") {
        itemStreet = address.address_components[0].long_name;
    }

    if (address.types[0] == "postal_code") {
        itemPostalCode = address.address_components[0].long_name;
    }

    if (address.types[0] == "country") {
        itemCountry = address.address_components[0].long_name;
    }

    if (address.types[0] == "locality") {
        itemRegion = address.address_components[0].long_name;
    }
  }
 });

我的功能是:

function checkAddress(address, number, zipcode, area, callback) {

    var geocoder = new google.maps.Geocoder;

    var addr = address + ' ' + number + ' ' + zipcode + ' ' + area;

    geocoder.geocode({ 'address': addr }, function (results, status) {

        if (status === google.maps.GeocoderStatus.OK) {
            if (results[0]) {
                callback(results);
            }
            else {
                callback(null);
            }
        }
        else {
            callback(null);
        }
    });
}

1 个答案:

答案 0 :(得分:2)

您只搜索1个组件(address.address_components[0]),因此您只能获得1个结果。

address.address_components[0]包含一个组件,例如“route”。然后address.address_components[1]包含另一个组件,例如“locality”,然后是address.address_components[2] ...据我记得,组件的顺序是随机的。

所以你需要的是迭代。对于您检查类型的每个组件,可以让您知道该值应该去哪里。

我为一个不同的Stack Overflow问题编写了一个函数来完成这个迭代,它可以“捕获”任何组件。

看看它是否适合你;让我知道。

Google API Address Components

相关问题