需要在结果数组中更改邮政编码的空间

时间:2015-04-22 08:10:06

标签: google-maps google-maps-api-3 geocoding google-geocoding-api

您的要求需要从

获取邮政编码
var address= results[0].formatted_address ;  

这个格式化的值。 因为幽冥土地的地址有'#34; Danzigerkade 12,1013 AP阿姆斯特丹,荷兰"这种地址。但我不想要这样的邮政编码" 1013 AP" 。我需要" 1013AP"像这样。

请给我解决方案。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我不建议解析formatted_address以获取邮政编码或任何其他特定地址字段。相反,您应该浏览address_components并检查每个types数组以找到您需要的地址字段。这比解析格式化字符串要可靠得多。

获得邮政编码后,删除空间非常简单。

要查找results数组中条目的邮政编码(例如results[0]),您可以使用以下代码:

function getAddressComponent( result, type ) {
    var components = result.address_components;
    for( var i = 0;  i < components.length;  ++i ) {
        var component = components[i], types = component.types;
        for( var k = 0;  k < types.length;  ++k ) {
            if( types[k] == type ){
                return component;
            }
        }
    }
    return {};
}

var component = getAddressComponent( results[0], 'postal_code' );
var postalCode = component ? component.short_name : '';
var postalCodeNoSpace = postalCode.replace( ' ', '' );
console.log( postalCodeNoSpace );

更新以回复您的评论:

您使用?:询问的代码使用JavaScript和许多其他语言中的conditional operator

var postalCode = component ? component.short_name : '';

这就像这个看起来更熟悉的更长的形式:

if( component )
    postalCode = component.short_name;
else
    postalCode = '';

如果component.short_name本身是componentnull,我们的想法是不尝试引用undefined,因为这当然是错误的。换句话说,如果getAddressComponent()找不到邮政编码,则保护程序不会崩溃。

但有趣的是,我使用它的方式存在一个错误。查看getAddressComponent()的最后一行:

    return {};

最初我会在那里返回null - 然后你问的代码是正确的 - 但由于某种原因我决定返回一个空对象。所以有问题的代码并没有完全改变。

解决这个问题的一种方法是回到我原本打算做的事情,并从中更改getAddressComponent()的最后一行:

    return {};

为:

    return null;