- HTTP 请求
- 请求正文
- 响应正文
- PostalAddress
- LanguageOptions
- ValidationResult
- Verdict
- 粒度
- 地址
- 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 会忽略 |
previousResponseId |
对于首次地址验证请求,此字段必须为空。如果需要发出更多请求才能完全验证单个地址(例如,如果用户在初始验证后所做的更改需要重新验证),则每个后续请求都必须使用验证序列中第一个响应中的 |
enableUspsCass |
启用 USPS CASS 兼容模式。这只会影响 建议使用组件化 |
languageOptions |
可选。预览版:此功能目前为预览版(正式发布前)。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。 使 Address Validation API 能够在响应中包含其他信息。 |
sessionToken |
可选。用于标识自动补全会话的字符串,以便进行结算。必须是网址和文件名安全的 base64 字符串,长度不得超过 36 个 ASCII 字符。否则,系统会返回 INVALID_ARGUMENT 错误。 会话在用户发出自动补全查询时开始,并在用户选择地点并发出地点详情或地址验证调用时结束。在每个会话中,用户可以输入多项自动补全查询,并最终发出一个地点详情或地址验证请求。在一个会话中,每个请求使用的凭据都必须属于同一 Google Cloud 控制台项目。会话结束后,令牌将失效;您的应用必须为每个会话生成一个新的令牌。如果您省略 注意:Address Validation 只能在使用 Autocomplete(新版)API(而非 Autocomplete API)的会话中使用。如需了解详情,请访问 https://developers.google.com/maps/documentation/places/web-service/session-pricing。 |
响应正文
对地址验证请求的响应。
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 |
---|
{
"result": {
object ( |
字段 | |
---|---|
result |
地址验证结果。 |
responseId |
用于标识此响应的 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 |
|
regionCode |
可选。地址的国家/地区的 CLDR 地区代码。如需了解详情,请参阅 https://cldr.unicode.org/ 和 https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html。例如:瑞士的地区代码为“CH”。如果未提供地区代码,系统会根据地址推断出地区代码。为获得最佳效果,建议您添加地区代码(如果您知道)。区域不一致或重复可能会导致效果不佳,例如,如果 |
languageCode |
输入地址中的语言代码预留以供日后使用,目前会被忽略。该 API 会以相应地址所在地所用语言返回地址。 |
postalCode |
可选。地址的邮政编码。并非所有国家/地区都使用或要求使用邮政编码,但在使用邮政编码时,它们可能会触发以地址其他部分为参照的额外验证(例如美国的州或邮政编码验证)。 |
sortingCode |
可选。特定于国家/地区的额外排序代码。大多数区域都未使用此功能。在使用时,此值可以是字符串(例如“CEDEX”),可选地后跟数字(例如“CEDEX 7”),也可以是单独的数字,表示“部门代码”(牙买加)、“配送区域指标”(马拉维)或“邮局指标”(科特迪瓦)。 |
administrativeArea |
可选。最高行政区划,用于国家或地区的邮政地址。例如,此值可以是州、省、州(俄罗斯)或县。对于西班牙,此值为省而非自治区(例如此值为“巴塞罗那”而非“加泰罗尼亚”)。许多国家在邮政地址中不使用行政区划。例如,对于瑞士,此字段应留空。 |
locality |
可选。一般是指地址的城市或城镇部分。示例:美国的城市、意大利的市镇、英国的邮镇。对于没有明确定义市行政区或者其无法很好地对应这个结构的地区,应将 |
sublocality |
可选。地址的子级市行政区。例如,此值可以是社区、自治市/镇/区或街区。 |
addressLines[] |
必需。描述详细地址的非结构化地址行。 |
recipients[] |
请避免设置此字段。Address Validation API 目前不使用它。虽然目前该 API 不会拒绝设置了此字段的请求,但系统会舍弃相应信息,不会在响应中返回。 |
organization |
请避免设置此字段。Address Validation API 目前不使用它。虽然目前该 API 不会拒绝设置了此字段的请求,但系统会舍弃相应信息,不会在响应中返回。 |
LanguageOptions
预览版:此功能目前为预览版(正式发布前)。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。
使 Address Validation API 能够在响应中包含其他信息。
JSON 表示法 |
---|
{ "returnEnglishLatinAddress": boolean } |
字段 | |
---|---|
returnEnglishLatinAddress |
预览:以英语返回 |
ValidationResult
地址验证结果。
JSON 表示法 |
---|
{ "verdict": { object ( |
字段 | |
---|---|
verdict |
总体判定标志 |
address |
与地理编码相对,与地址本身相关的信息。 |
geocode |
与地址经过地理编码后对应的地点和地理位置相关的信息。 |
metadata |
与可送达性相关的其他信息。无法保证为发送到 Address Validation API 的每个地址都填充完整的 |
uspsData |
USPS 提供的额外可送达性标志。仅在区域 |
englishLatinAddress |
预览版:此功能目前为预览版(正式发布前)。正式发布前的产品和功能获得的支持可能较为有限,并且对其作出的更改可能不兼容其他正式发布前版本。正式发布前的产品或功能受 Google Maps Platform 服务专用条款约束。如需了解详情,请参阅发布阶段说明。 翻译成英语的地址。 转换后的地址无法作为 API 输入重复使用。该服务提供这些信息,以便用户使用其母语确认或拒绝对原始提供的地址进行验证。 如果地址的某个部分没有英语译文,该服务会使用使用拉丁字母的其他语言返回该部分。如需了解如何选择备用语言,请参阅此处。如果地址的某个部分没有任何使用拉丁字母的语言的翻译或转写,该服务会以与地址关联的本地语言返回该部分。 使用 注意: |
判定
地址验证结果和地理编码的简要概览。
JSON 表示法 |
---|
{ "inputGranularity": enum ( |
字段 | |
---|---|
inputGranularity |
输入地址的粒度。这是解析输入地址的结果,不会提供任何验证信号。如需了解验证信号,请参阅下文中的 例如,如果输入的地址包含特定门牌号,则此处的 |
validationGranularity |
API 可以完全验证地址的精细级别。例如, 您可以在 |
geocodeGranularity |
有关 这可能与上面的 |
addressComplete |
如果没有未解析的令牌、没有意外的地址组成部分或缺少地址组成部分,则地址会被视为完整。如果未设置,表示值为 |
hasUnconfirmedComponents |
至少有一个地址组件无法分类或验证,详情请参阅 |
hasInferredComponents |
系统推断(添加)了输入中不存在的至少一个地址组成部分,如需了解详情,请参阅 |
hasReplacedComponents |
至少有一个地址组成部分已替换,如需了解详情,请参阅 |
粒度
地址或地理编码可能具有的各种精确度。当用于指明地址的精细程度时,这些值表示地址用于标识邮寄目的地的细致程度。例如,“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 ( |
字段 | |
---|---|
formattedAddress |
经过处理后的地址,格式为单行地址,遵循地址所在区域的地址格式规则。 注意:此地址的格式可能与 |
postalAddress |
经过处理后的地址,表示为邮政地址。 |
addressComponents[] |
无序列表。经过格式设置和更正的地址的各个地址组成部分,以及验证信息。这会提供有关各个组件的验证状态的信息。 地址组成部分没有特定的排序方式。请勿对列表中地址组成部分的排序做出任何假设。 |
missingComponentTypes[] |
预计应在格式正确的邮寄地址中存在但在输入中未找到且无法推断的组成部分类型。例如,如果输入值为“Boulder, Colorado, 80301, USA”,则 注意:当您认为自己已提供缺少的组件时,可能会看到缺少组件类型。例如,如果输入的地址包含建筑物名称,但不包含门牌号,就可能会出现这种情况。在地址“渋谷区渋谷3丁目 Shibuya Stream”中,“Shibuya Stream”建筑物名称的组成部分类型为 |
unconfirmedComponentTypes[] |
|
unresolvedTokens[] |
输入中无法解析的任何令牌。这可能是因为输入内容未被识别为地址的有效部分。例如,对于“Parcel 0000123123 & 0000456456 Str # Guthrie Center IA 50115 US”这样的输入,未解析的令牌可能如下所示: |
AddressComponent
表示地址组成部分,例如街道、城市或州。
JSON 表示法 |
---|
{ "componentName": { object ( |
字段 | |
---|---|
componentName |
此组件的名称。 |
componentType |
地址组成部分的类型。如需查看可能类型的列表,请参阅表 2:地点服务返回的其他类型。 |
confirmationLevel |
表示我们对组件正确性的确信程度。 |
inferred |
表示该组成部分并非输入内容的一部分,但我们根据地址位置推断出了该组成部分,并认为应提供该组成部分以便提供完整地址。 |
spellCorrected |
表示更正了组件名称中的拼写错误。该 API 并不总会标记从一种拼写变体更改为另一种拼写变体,例如将“centre”更改为“center”。此外,它也不一定会标记常见的拼写错误,例如将“Amphitheater Pkwy”更改为“Amphitheatre Pkwy”。 |
replaced |
表示组件的名称已被完全不同的名称替换,例如错误的邮政编码被替换为与地址相符的邮政编码。这不是外观上的更改,输入组件已更改为其他组件。 |
unexpected |
表示给定地区的邮政地址中不应包含的地址组成部分。我们之所以保留该信息,是因为它是输入内容的一部分。 |
ComponentName
组件名称的封装容器。
JSON 表示法 |
---|
{ "text": string, "languageCode": string } |
字段 | |
---|---|
text |
名称文本。例如,街道名称为“第 5 大道”,门牌号为“1253”。 |
languageCode |
BCP-47 语言代码。如果组件名称与语言无关(例如门牌号),则不会显示此属性。 |
ConfirmationLevel
确认级别的不同可能值。
枚举 | |
---|---|
CONFIRMATION_LEVEL_UNSPECIFIED |
默认值。此值未使用。 |
CONFIRMED |
我们能够验证此组件存在且在地址的其余部分中合理。 |
UNCONFIRMED_BUT_PLAUSIBLE |
我们无法确认此组件,但它可能存在。例如,某条街道上的门牌号,其门牌号位于已知有效范围内,但具体门牌号未知。 |
UNCONFIRMED_AND_SUSPICIOUS |
此组件未经确认,可能不正确。例如,与地址的其余部分不符的街区。 |
地理编码
包含与输入内容经过地理编码的地点相关的信息。
JSON 表示法 |
---|
{ "location": { object ( |
字段 | |
---|---|
location |
输入内容经过地理编码的位置。 建议使用地点 ID,而不是使用地址、纬度/经度坐标或 Plus Code。在规划路线或计算驾车路线时使用坐标,始终会导致相应点被捕获到距离这些坐标最近的道路。此路线可能无法快速或安全地抵达目的地,也可能不在相应房源的入口附近。此外,对某个位置进行逆向地理编码时,无法保证返回的地址与原始地址一致。 |
plusCode |
与 |
bounds |
经过地理编码的地点的边界。 |
featureSizeMeters |
经过地理编码的地点的大小(以米为单位)。这是衡量经过地理编码的位置粗糙程度的另一种方法,但以实际大小(而非语义含义)衡量。 |
placeId |
此输入地理编码的地点的 PlaceID。 如需详细了解地点 ID,请点击此处。 |
placeTypes[] |
输入内容经过地理编码后对应的地点类型。例如, |
LatLng
表示纬度/经度对的对象。该对象以一对双精度数表示,分别代表纬度度数和经度度数。除非另有说明,否则该对象必须符合 WGS84 标准。值必须介于标准化范围内。
JSON 表示法 |
---|
{ "latitude": number, "longitude": number } |
字段 | |
---|---|
latitude |
纬度(以度为单位)。它必须在 [-90.0, +90.0] 范围内。 |
longitude |
经度(以度为单位)。它必须在 [-180.0, +180.0] 范围内。 |
PlusCode
Plus Code(http://plus.codes)是一种位置参考,有两种格式:全局代码(定义 14 米 x 14 米 [1/8,000 度] 或更小的矩形)和复合代码(将前缀替换为参考位置)。
JSON 表示法 |
---|
{ "globalCode": string, "compoundCode": string } |
字段 | |
---|---|
globalCode |
地点的全局(完整)代码,例如“9FWM33GV+HQ”,表示 1/8, 000 度 x 1/8,000 度(约 14 米 x 14 米)的区域。 |
compoundCode |
地点的混合代码,例如“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 |
表示这是商家的地址。如果未设置,则表示值未知。 |
poBox |
表示邮政信箱地址。如果未设置,则表示值未知。 |
residential |
表示这是住宅的地址。如果未设置,则表示值未知。 |
UspsData
相应地址的 USPS 数据。我们无法保证为发送到 Address Validation API 的每个美国或美属波多黎各地址都填充完整的 uspsData
。如果您将 uspsData 用作响应的主要部分,建议您在响应中集成备用地址字段。
JSON 表示法 |
---|
{
"standardizedAddress": {
object ( |
字段 | |
---|---|
standardizedAddress |
USPS 标准地址。 |
deliveryPointCode |
2 位数投递点代码 |
deliveryPointCheckDigit |
送货点校验码。对于机械扫描的邮件,此编号会添加到 delivery_point_barcode 的末尾。将 delivery_point_barcode、deliveryPointCheckDigit、邮政编码和邮政编码+4 的所有数字相加,所得数字应为 10 的倍数。 |
dpvConfirmation |
DPV 确认的可能值。返回单个字符或不返回任何值。
|
dpvFootnote |
送货点验证中的脚注。多个脚注可以串联在同一字符串中。
|
dpvCmra |
指明相应地址是否为 CMRA(商业邮件接收代理机构),即为客户接收邮件的私营企业。返回单个字符。
|
dpvVacant |
这个地方是否空闲?返回单个字符。
|
dpvNoStat |
这是无状态地址还是有效地址?无统计地址是指未持续有人居住或 USPS 不提供服务的地址。返回单个字符。
|
dpvNoStatReasonCode |
表示 NoStat 类型。以 int 的形式返回原因代码。
|
dpvDrop |
此标志表示邮件会投递到某个地点的单个收件箱。返回单个字符。
|
dpvThrowback |
表示邮件未投递到相应街道地址。返回单个字符。
|
dpvNonDeliveryDays |
此标志表示邮件递送并非每周七天都进行。返回单个字符。
|
dpvNonDeliveryDaysValues |
用于标识未投放天数的整数。可以使用位标志进行查询:0x40 - 星期日为非送货日;0x20 - 星期一为非送货日;0x10 - 星期二为非送货日;0x08 - 星期三为非送货日;0x04 - 星期四为非送货日;0x02 - 星期五为非送货日;0x01 - 星期六为非送货日 |
dpvNoSecureLocation |
此标志表示可以进入门户,但由于安全问题,不会将包裹留在门口。返回单个字符。
|
dpvPbsa |
表示地址与 PBSA 记录匹配。返回单个字符。
|
dpvDoorNotAccessible |
此标志表示 USPS 无法敲门递送邮件的地址。返回单个字符。
|
dpvEnhancedDeliveryCode |
表示该地址有多个有效的 DPV 返回代码。返回单个字符。
|
carrierRoute |
运输公司路线代码。一个由一个字母前缀和一个三位数路线标识符组成的四位字符代码。 前缀:
|
carrierRouteIndicator |
运营商路线费率排序指标。 |
ewsNoMatch |
送货地址可匹配,但 EWS 文件显示很快就会有完全匹配的地址。 |
postOfficeCity |
主邮局所在的城市。 |
postOfficeState |
主邮局状态。 |
abbreviatedCity |
城市的缩写。 |
fipsCountyCode |
FIPS 县代码。 |
county |
郡/县名称。 |
elotNumber |
增强型航线 (eLOT) 编号。 |
elotFlag |
eLOT 升序/降序标志 (A/D)。 |
lacsLinkReturnCode |
LACSLink 返回代码。 |
lacsLinkIndicator |
LACSLink 指示器。 |
poBoxOnlyPostalCode |
仅限邮政信箱的邮政编码。 |
suitelinkFootnote |
将街道或高层建筑记录与套房信息进行匹配时生成的脚注。如果找到商家名称匹配项,则会返回辅助号码。
|
pmbDesignator |
PMB(私人邮箱)单元标识符。 |
pmbNumber |
PMB(私人邮箱)编号; |
addressRecordType |
与输入地址匹配的地址记录的类型。
|
defaultAddress |
指示找到了默认地址,但存在更具体的地址。 |
errorMessage |
USPS 数据检索错误消息。如果 USPS 检测到人为创建的地址,则会暂停处理,并填充此字段。 出现此错误时,USPS 数据字段可能不会填充。 |
cassProcessed |
指示请求已通过 CASS 处理的指标。 |
UspsAddress
USPS 表示美国地址的格式。
JSON 表示法 |
---|
{ "firstAddressLine": string, "firm": string, "secondAddressLine": string, "urbanization": string, "cityStateZipAddressLine": string, "city": string, "state": string, "zipCode": string, "zipCodeExtension": string } |
字段 | |
---|---|
firstAddressLine |
地址的第一行。 |
firm |
公司名称。 |
secondAddressLine |
地址的第二行。 |
urbanization |
波多黎各城市化区域名称。 |
cityStateZipAddressLine |
城市 + 州/省级行政区 + 邮政编码。 |
city |
城市名称。 |
state |
由 2 个字母组成的州代码。 |
zipCode |
邮政编码,例如 10009。 |
zipCodeExtension |
4 位数的邮政编码附加信息,例如 5023。 |