您的要求需要从
获取邮政编码var address= results[0].formatted_address ;
这个格式化的值。 因为幽冥土地的地址有'#34; Danzigerkade 12,1013 AP阿姆斯特丹,荷兰"这种地址。但我不想要这样的邮政编码" 1013 AP" 。我需要" 1013AP"像这样。
请给我解决方案。 提前谢谢。
答案 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
本身是component
或null
,我们的想法是不尝试引用undefined
,因为这当然是错误的。换句话说,如果getAddressComponent()
找不到邮政编码,则保护程序不会崩溃。
但有趣的是,我使用它的方式存在一个错误。查看getAddressComponent()
的最后一行:
return {};
最初我会在那里返回null
- 然后你问的代码是正确的 - 但由于某种原因我决定返回一个空对象。所以有问题的代码并没有完全改变。
解决这个问题的一种方法是回到我原本打算做的事情,并从中更改getAddressComponent()
的最后一行:
return {};
为:
return null;