- HTTP 请求
- 请求正文
- 响应正文
- PostalAddress
- LanguageOptions
- ValidationResult
- 判定结果
- 粒度
- 地址
- AddressComponent
- ComponentName
- ConfirmationLevel
- 地理编码
- LatLng
- PlusCode
- 视口
- AddressMetadata
- UspsData
- UspsAddress
验证地址。
HTTP 请求
POST https://addressvalidation.googleapis.com/v1:validateAddress
网址采用 gRPC 转码语法。
请求正文
请求正文中包含结构如下的数据:
JSON 表示法 |
---|
{ "address": { object ( |
字段 | |
---|---|
address |
必需。要验证的地址。不带格式的地址应通过 此输入中的字段总长度不得超过 280 个字符。 如需了解支持的地区,请点击此处。 输入地址中的 Address Validation API 会忽略 |
previous |
对于首次地址验证请求,此字段必须为空。如果需要更多请求来完全验证单个地址(例如,如果用户在初始验证后进行的更改需要重新验证),则每个后续请求都必须使用验证序列中第一个响应中的 |
enable |
启用 USPS CASS 兼容模式。这只会影响 建议使用组件化 |
language |
可选。预览版:此功能目前为正式发布前的预览版。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。 让 Address Validation API 能够在响应中添加其他信息。 |
session |
可选。用于标识“自动补全”会话以便进行结算的字符串。必须是网址和文件名安全的 base64 字符串,长度不得超过 36 个 ASCII 字符。否则,系统会返回 INVALID_ARGUMENT 错误。 会话在用户发出自动补全查询时开始,并在用户选择地点并发出地点详情或地址验证调用时结束。在每个会话中,用户可以输入多项自动补全查询,并最终发出一个地点详情或地址验证请求。一个会话内用于每个请求的凭据必须属于同一个 Google Cloud 控制台项目。会话结束后,令牌将失效;您的应用必须为每个会话生成一个新的令牌。如果您省略 注意:地址验证功能只能在使用 Autocomplete(新)API(而非 Autocomplete API)的会话中使用。如需了解详情,请访问 https://developers.google.com/maps/documentation/places/web-service/session-pricing。 |
响应正文
对地址验证请求的响应。
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 |
---|
{
"result": {
object ( |
字段 | |
---|---|
result |
地址验证的结果。 |
response |
用于标识此响应的 UUID。如果需要重新验证地址,则必须在新的请求中附上此 UUID。 |
PostalAddress
表示邮政地址,例如邮政递送或付款地址。给定邮政地址时,邮政服务可以将物品投递到处所、邮政信箱或其他投递地点。此对象不模拟地理位置(道路、城镇、山区)。
在典型的使用场景中,地址将通过用户输入或导入现有数据来创建,具体取决于进程的类型。
有关输入/修改地址的建议:使用支持国际化的地址微件,例如 https://github.com/google/libaddressinput。在使用某个字段的国家/地区之外,不应向用户显示用于输入或修改该字段的界面元素。
如需详细了解如何使用此架构,请参阅:https://support.google.com/business/answer/6397478
JSON 表示法 |
---|
{ "revision": integer, "regionCode": string, "languageCode": string, "postalCode": string, "sortingCode": string, "administrativeArea": string, "locality": string, "sublocality": string, "addressLines": [ string ], "recipients": [ string ], "organization": string } |
字段 | |
---|---|
revision |
|
region |
可选。地址的国家/地区的 CLDR 地区代码。如需了解详情,请参阅 https://cldr.unicode.org/ 和 https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html。例如:瑞士的地区代码为“CH”。如果未提供地区代码,系统会根据地址推断出地区代码。为获得最佳效果,建议您添加地区代码(如果您知道)。地区不一致或重复可能会导致性能不佳,例如,如果 |
language |
输入地址中的语言代码预留以供日后使用,目前会被忽略。API 会以地址所在位置的相应语言返回地址。 |
postal |
可选。地址的邮政编码。并非所有国家/地区都使用或要求使用邮政编码,但在使用邮政编码时,它们可能会触发地址其他部分的额外验证(例如美国的州/邮政编码验证)。 |
sorting |
可选。特定于国家/地区的额外排序代码。大多数区域都未使用此功能。在使用它的地方,此值可以是一个类似“CEDEX”的字符串,后面可能会跟一个数字(例如“CEDEX 7”),或者只有一个数字,代表“管制区代码”(牙买加),“投递区域指标”(马拉维)或“邮局指标”(例如科特迪瓦)。 |
administrative |
可选。最高行政区划,用于国家或地区的邮政地址。例如,此值可以是州、省、州(俄罗斯)或县。具体来说,对于西班牙,此值为省而非自治区(例如此值为“巴塞罗那”而非“加泰罗尼亚”)。许多国家在邮政地址中不使用行政区划。例如对于瑞士,此字段应留空。 |
locality |
可选。一般是指地址的城市/城镇部分。示例:美国的城市、意大利的市镇、英国的邮镇。对于没有明确定义 locality 或者其无法很好地对应这个结构的区域,应将 locality 留空并使用 address_lines。 |
sublocality |
可选。地址的子级市行政区。例如,此值可以是社区、自治市/镇/区、行政区。 |
address |
必需。描述详细地址的非结构化地址行。 |
recipients[] |
请避免设置此字段。Address Validation API 目前未使用它。虽然目前该 API 不会拒绝设置了此字段的请求,但系统会舍弃相应信息,不会在响应中返回。 |
organization |
请避免设置此字段。Address Validation API 目前不使用该参数。尽管 API 目前不会拒绝设置了此字段的请求,但此信息将被舍弃,并且不会在响应中返回。 |
LanguageOptions
预览版:此功能目前为正式发布前的预览版。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。
让 Address Validation API 能够在响应中添加其他信息。
JSON 表示法 |
---|
{ "returnEnglishLatinAddress": boolean } |
字段 | |
---|---|
return |
预览:返回英语的 |
ValidationResult
地址验证结果。
JSON 表示法 |
---|
{ "verdict": { object ( |
字段 | |
---|---|
verdict |
总体判定标志 |
address |
与地理编码相对,与地址本身相关的信息。 |
geocode |
与地址经过地理编码后对应的地点和位置相关的信息。 |
metadata |
与可送达性相关的其他信息。无法保证为发送到 Address Validation API 的每个地址都完全填充 |
usps |
USPS 提供的额外可送达性标志。仅在 |
english |
预览版:此功能目前为正式发布前的预览版。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。 翻译成英语的地址。 转换后的地址无法作为 API 输入重复使用。该服务提供这些选项,以便用户使用其母语确认或拒绝对原始提供的地址进行验证。 如果地址的某个部分没有英语译文,该服务会使用使用拉丁字母的其他语言返回该部分。如需了解如何选择备用语言,请参阅此处。如果地址的某个部分没有任何使用拉丁字母的语言的翻译或转写,该服务会以与地址关联的当地语言返回该部分。 使用 注意: |
判定
地址验证结果和地理编码的简要概览。
JSON 表示法 |
---|
{ "inputGranularity": enum ( |
字段 | |
---|---|
input |
input 地址的粒度。这是解析输入地址的结果,不会提供任何验证信号。如需了解验证信号,请参阅下面的 例如,如果输入的地址包含特定门牌号,则此处的 |
validation |
API 可以完全验证地址的精细级别。例如, 您可以在 |
geocode |
有关 这可能与上面的 |
address |
如果没有未解析的令牌、没有意外的地址部分或缺少地址部分,则地址会被视为完整。如果未设置,表示值为 |
has |
至少有一个地址组件无法分类或验证,详情请参阅 |
has |
至少有一个推断(添加)的地址组成部分不在输入内容中。如需了解详情,请参阅 |
has |
至少有一个地址组成部分已替换,如需了解详情,请参阅 |
粒度
地址或地理编码可以具有的各种精细度。当用于指示地址的精细程度时,这些值表示地址用于标识邮寄目的地的细致程度。例如,诸如“123 Main Street, Redwood City, CA, 94061”之类的地址用于标识 PREMISE
,而诸如“Redwood City, CA, 94061”之类的地址则用于标识 LOCALITY
。不过,如果我们找不到 Redwood City 的“123 Main Street”的地理编码,则返回的地理编码可能为 LOCALITY
精确度,即使地址的精确度更高也是如此。
枚举 | |
---|---|
GRANULARITY_UNSPECIFIED |
默认值。此值未使用。 |
SUB_PREMISE |
建筑物级别以下的结果,例如公寓。 |
PREMISE |
建筑级结果。 |
PREMISE_PROXIMITY |
大致表示地址的建筑物级位置的地理编码。 |
BLOCK |
地址或地理编码表示街区。仅在采用街区级地址的区域(例如日本)使用。 |
ROUTE |
地理编码或地址的粒度为路线,例如街道、道路或高速公路。 |
OTHER |
所有其他精确度,由于无法传送,因此会归为一类。 |
地址
经过处理后的地址的详细信息。后处理包括更正地址中拼写错误的部分、替换不正确的部分以及推断缺失的部分。
JSON 表示法 |
---|
{ "formattedAddress": string, "postalAddress": { object ( |
字段 | |
---|---|
formatted |
经过处理后的地址,格式为单行地址,遵循地址所在区域的地址格式规则。 注意:此地址的格式可能与 |
postal |
经过处理的地址,表示为邮政地址。 |
address |
无序列表。经过格式设置和更正的地址的各个地址组成部分,以及验证信息。这提供了有关各个组件的验证状态的信息。 地址组成部分没有特定的排序方式。请勿对列表中地址组成部分的排序做出任何假设。 |
missing |
预计应在格式正确的邮寄地址中出现,但在输入中未找到且无法推断的组成部分类型。 |
unconfirmed |
|
unresolved |
输入中任何无法解析的令牌。这可能是因为输入内容未被识别为地址的有效部分。例如,对于“Parcel 0000123123 & 0000456456 Str # Guthrie Center IA 50115 US”这样的输入,未解析的令牌可能如下所示: |
AddressComponent
表示地址组成部分,例如街道、城市或州。
JSON 表示法 |
---|
{ "componentName": { object ( |
字段 | |
---|---|
component |
此组件的名称。 |
component |
地址组成部分的类型。如需查看可能类型的列表,请参阅表 2:地点服务返回的其他类型。 |
confirmation |
表示我们对组件正确性的确信程度。 |
inferred |
表示该组成部分不是输入内容的一部分,但我们根据地址位置推断出该组成部分,并认为应当针对完整地址提供该组成部分。 |
spell |
表示更正了组件名称中的拼写错误。API 并不总是标记从一种拼写变体到另一种拼写变体的更改,例如,当将“centre”更改为“center”时。此外,它也不一定会标记常见的拼写错误,例如将“Amphitheater Pkwy”更改为“Amphitheatre Pkwy”。 |
replaced |
表示组件名称已被完全不同的名称替换,例如,错误的邮政编码被替换为适合地址的邮政编码。这不是外观上的更改,输入组件已更改为其他组件。 |
unexpected |
表示给定地区的邮政地址中不应存在的地址组成部分。我们之所以保留它,只是因为它是输入内容的一部分。 |
ComponentName
组件名称的封装容器。
JSON 表示法 |
---|
{ "text": string, "languageCode": string } |
字段 | |
---|---|
text |
名称文本。例如,街道名称为“5th Avenue”,门牌号为“1253”。 |
language |
BCP-47 语言代码。如果组件名称未与语言(例如门牌号)相关联,则不会显示此字段。 |
ConfirmationLevel
确认级别的不同可能值。
枚举 | |
---|---|
CONFIRMATION_LEVEL_UNSPECIFIED |
默认值。此值未使用。 |
CONFIRMED |
我们能够验证该组成部分是否存在,以及在地址的其余部分是否合理。 |
UNCONFIRMED_BUT_PLAUSIBLE |
我们无法确认此组件,但它可能存在。例如,某个街道上未知的有效门牌号。 |
UNCONFIRMED_AND_SUSPICIOUS |
此组件未经确认,可能不正确。例如,某个街区与地址的其余部分不符。 |
地理编码
包含与输入内容经过地理编码的地点相关的信息。
JSON 表示法 |
---|
{ "location": { object ( |
字段 | |
---|---|
location |
输入内容经过地理编码的位置。 建议使用地点 ID,而不是使用地址、纬度/经度坐标或 Plus Code。在规划路线或计算驾车路线时使用坐标,始终会导致相应点被拉伸到距离这些坐标最近的道路。此路线可能无法快速或安全地抵达目的地,也可能不在相应房源的入口附近。此外,对某个位置进行逆向地理编码时,无法保证返回的地址与原始地址一致。 |
plus |
与 |
bounds |
经过地理编码的地点的边界。 |
feature |
经过地理编码的地点的大小(以米为单位)。这是对地理编码位置的粗略程度的另一种衡量方式,但以物理大小而非语义含义为准。 |
place |
此输入地理编码的地点的 PlaceID。 如需详细了解地点 ID,请点击此处。 |
place |
对输入进行地理编码到的地点类型。例如, |
LatLng
表示纬度/经度对的对象。该对象以一对双精度数表示,分别代表纬度度数和经度度数。除非另有说明,否则该对象必须符合 WGS84 标准。值必须介于标准化范围内。
JSON 表示法 |
---|
{ "latitude": number, "longitude": number } |
字段 | |
---|---|
latitude |
纬度(以度为单位)。它必须在 [-90.0, +90.0] 范围内。 |
longitude |
经度(以度为单位)。它必须在 [-180.0, +180.0] 范围内。 |
PlusCode
Plus Code (http://plus.codes) 是采用两种格式的位置引用:定义 14mx14m(1/8000 度)或更小矩形的全局代码,以及将前缀替换为引用位置的复合代码。
JSON 表示法 |
---|
{ "globalCode": string, "compoundCode": string } |
字段 | |
---|---|
global |
地点的全局(完整)代码,例如“9FWM33GV+HQ”,表示 1/8,000 度 x 1/8,000 度(约 14 米 x 14 米)的区域。 |
compound |
地点的混合代码,例如“33GV+HQ, Ramberg, Norway”,其中包含全局代码的后缀,并将前缀替换为参考实体的格式化名称。 |
视口
纬度-经度视口,表示为两个对角的 low
和 high
点。视口被视为封闭区域,即包含其边界。纬度边界必须介于 -90 度和 90 度(含)之间,经度边界必须介于 -180 度(含)180 度(含)之间。各种情况包括:
如果
low
=high
,则视口由该单个点组成。如果
low.longitude
>high.longitude
,则经度范围会反转(视口跨越 180 度经线)。如果
low.longitude
= -180 度且high.longitude
= 180 度,则视口包含所有经度。如果
low.longitude
= 180 度,high.longitude
= -180 度,则经度范围为空。如果
low.latitude
>high.latitude
,则纬度范围为空。
必须填充 low
和 high
,并且表示的框不能为空(如上文定义所述)。空视口将导致错误。
例如,此视口完全包含纽约市:
{ "low": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } }
JSON 表示法 |
---|
{ "low": { object ( |
字段 | |
---|---|
low |
必需。视口的最低点。 |
high |
必需。视口的高点。 |
AddressMetadata
地址的元数据。对于发送到 Address Validation API 的每个地址,系统不一定会完整填充 metadata
。
JSON 表示法 |
---|
{ "business": boolean, "poBox": boolean, "residential": boolean } |
字段 | |
---|---|
business |
表示这是商家的地址。如果未设置,则表示值未知。 |
po |
表示邮政信箱地址。如果未设置,则表示值未知。 |
residential |
指明这是住宅的地址。如果未设置,则表示值未知。 |
UspsData
相应地址的 USPS 数据。我们无法保证为发送到 Address Validation API 的每个美国或美属波多黎各地址都填充完整的 uspsData
。如果您使用 uspsData 作为响应的主要部分,建议您在响应中集成备份地址字段。
JSON 表示法 |
---|
{
"standardizedAddress": {
object ( |
字段 | |
---|---|
standardized |
USPS 标准化地址。 |
delivery |
2 位数投递点代码 |
delivery |
送货点校验码。对于机械扫描的邮件,此编号会添加到 delivery_point_barcode 的末尾。将 delivery_point_barcode、deliveryPointCheckDigit、邮政编码和邮政编码+4 的所有数字相加,所得数字应为 10 的倍数。 |
dpv |
DPV 确认的可能值。返回单个字符或不返回任何值。
|
dpv |
送货点验证中的脚注。多个脚注可以串联在同一字符串中。
|
dpv |
指明相应地址是否为 CMRA(商业邮件接收代理机构),即为客户接收邮件的私营企业。返回单个字符。
|
dpv |
这个地方是否空闲?返回单个字符。
|
dpv |
这是无状态地址还是有效地址?无统计地址是指未持续有人居住或 USPS 不提供服务的地址。返回单个字符。
|
dpv |
表示 NoStat 类型。以整数形式返回原因代码。
|
dpv |
此标志表示邮件会投递到某个地点的单个收件箱。返回单个字符。
|
dpv |
表示邮件未递送到街道地址。返回单个字符。
|
dpv |
标记表示并非一周的每一天都执行邮件递送。返回单个字符。
|
dpv |
用于标识未投放天数的整数。可以使用位标志询问该日期:0x40 – 星期日是无法送达的日 0x20 – 星期一是无法送达的日 0x10 – 星期二是无法送达的日 0x08 – 星期三是无法送达的日 0x04 – 星期四是无法送达的日 0x02 – 星期五是无法送达的日 |
dpv |
此标志表示可以进入门户,但由于安全问题,不会将包裹留在门口。返回单个字符。
|
dpv |
表示地址与 PBSA 记录匹配。返回单个字符。
|
dpv |
标记指出了 USPS 无法敲门寄送邮件的地址。返回单个字符。
|
dpv |
表示有多个 DPV 返回代码对该地址有效。返回单个字符。
|
carrier |
运输公司路线代码。由 1 个字母前缀和 3 位数路线指示符组成的四位字符代码。 前缀:
|
carrier |
运营商路由费率排序指示器。 |
ews |
送货地址可匹配,但 EWS 文件指出很快便能使用完全匹配的地址。 |
post |
主邮局所在的城市。 |
post |
主要邮局州/省。 |
abbreviated |
城市的缩写。 |
fips |
FIPS 县代码。 |
county |
郡/县名称。 |
elot |
增强型航线 (eLOT) 编号。 |
elot |
eLOT 升序/降序标志 (A/D)。 |
lacs |
LACSLink 返回代码。 |
lacs |
LACSLink 指示符。 |
po |
仅限邮政信箱的邮政编码。 |
suitelink |
用于将街道或高层记录与套房信息进行匹配的脚注。如果找到商家名称匹配项,则会返回辅助号码。
|
pmb |
PMB(私人邮箱)单元标识符。 |
pmb |
PMB(私人邮箱)编号; |
address |
与输入地址匹配的地址记录的类型。
|
default |
表示找到了默认地址,但存在更具体的地址的指示符。 |
error |
检索 USPS 数据时出现的错误消息。当 USPS 处理因检测到人为创建的地址而被暂停时,系统会填充此字段。 出现此错误时,USPS 数据字段可能不会填充。 |
cass |
指示请求已通过 CASS 处理的指标。 |
UspsAddress
USPS 表示美国地址的格式。
JSON 表示法 |
---|
{ "firstAddressLine": string, "firm": string, "secondAddressLine": string, "urbanization": string, "cityStateZipAddressLine": string, "city": string, "state": string, "zipCode": string, "zipCodeExtension": string } |
字段 | |
---|---|
first |
地址的第一行。 |
firm |
公司名称。 |
second |
地址的第二行。 |
urbanization |
波多黎各城市化名称。 |
city |
城市 + 州/省级行政区 + 邮政编码。 |
city |
城市名称。 |
state |
由 2 个字母组成的州代码。 |
zip |
邮政编码,例如 10009。 |
zip |
4 位数的邮政编码附加信息,例如 5023。 |