Google 地理编码 XML 响应删除了 apartment/suite 个数字

Google Geocoding XML response removes apartment/suite numbers

使用地理编码 API 时,原始地址中嵌入的任何公寓或套房号似乎都已在 XML 响应中删除。这样就无法使用返回的地址作为"corrected"或"standardized"格式来保存。

  1. 有没有办法保存地址信息?

  2. 其次,在这种情况下,"apt B" 代表与 "A,C,D,E, etc." 不同的建筑物,因此是不同的屋顶地理编码。

感谢任何帮助

发送以下地址:1135 Thomas Ln。 Apt B,希克森,田纳西州 37343 到以下 URL(已删除密钥)"https://maps.googleapis.com/maps/api/geocode/xml?address=[ADDRESS]&key=[KEY]"

产生以下响应:

<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
 <status>OK</status>
 <result>
  <type>street_address</type>
  <formatted_address>1135 Thomas Lane, Hixson, TN 37343, USA</formatted_address>
  <address_component>
   <long_name>1135</long_name>
   <short_name>1135</short_name>
   <type>street_number</type>
  </address_component>
  <address_component>
   <long_name>Thomas Lane</long_name>
   <short_name>Thomas Ln</short_name>
   <type>route</type>
  </address_component>
  <address_component>
   <long_name>Hixson</long_name>
   <short_name>Hixson</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Chattanooga</long_name>
   <short_name>Chattanooga</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Hamilton County</long_name>
   <short_name>Hamilton County</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Tennessee</long_name>
   <short_name>TN</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>United States</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>37343</long_name>
   <short_name>37343</short_name>
   <type>postal_code</type>
  </address_component>
  <address_component>
   <long_name>3744</long_name>
   <short_name>3744</short_name>
   <type>postal_code_suffix</type>
  </address_component>
  <geometry>
   <location>
    <lat>35.1448870</lat>
    <lng>-85.2471100</lng>
   </location>
   <location_type>ROOFTOP</location_type>
   <viewport>
    <southwest>
     <lat>35.1435380</lat>
     <lng>-85.2484590</lng>
    </southwest>
    <northeast>
     <lat>35.1462360</lat>
     <lng>-85.2457610</lng>
    </northeast>
   </viewport>
  </geometry>
  <partial_match>true</partial_match>
 </result>
</GeocodeResponse>

您遇到的麻烦可以追溯到 Google 地理编码 API 的核心理念和用例目标:确定结构或设施的 latitude/longitude 坐标并绘制它在地图上。次要信息(套房、公寓等)通常对于实现该目标不是必需的,因此被丢弃或忽略。具有每个次要编号结构的交付点,例如Suite 100 的整栋建筑和 Suite 200 的另一栋建筑并不是特别常见,而且似乎不属于 Google 地理编码 API.

的预期用户范围

此外,API 是一个 "address approximation" 工具,可以猜测地址的位置。例如,如果 121 Main Street 有一个建筑物并且 125 Main Street 也有,但是 123 Main Street 不是真实的,它将在 121125 之间绘制地址就好像它在那里一样,即使地址不存在。

如果您要验证地址(有或没有辅助信息)以确保它是真实的,然后将其绘制在地图上,有许多服务(免费和付费)可以提供此服务行为。一个简单的 Google 搜索类似 "address verification" 的内容将为您提供许多提供验证和地理编码的组织的结果。

如果这些服务的地理编码分辨率不足以满足您的业务需求,您仍然希望拥有一个经过清理的地址,因为这样您就可以将这些经过清理和验证的地址通过管道传输到另一个服务——也许NavTeq——获取整个建筑物专用于辅助编号(套房、公寓等)的位置的屋顶层数据。请注意,像 NavTeq 这样的提供商通常非常昂贵,因此只有当您的业务需求确实需要超精确分辨率的费用时,您才能做出判断。

为了全面披露,我是 SmartyStreets and we provide address verification and geocoding services 的创始人。如果您有其他问题,我们很乐意提供帮助。

如果您可以请求 json 响应而不是 xml 响应,它将在

中保留 'Apt B' 数据
"types" : [ "subpremise" ]
  • subpremise 表示命名位置下方的一阶实体,通常是具有 常用名。

[1135 托马斯 Ln。 Apt B, Hixson, TN 37343] 作为 json 回应..

"https://maps.googleapis.com/maps/api/geocode/json?address=[ADDRESS]&key=[KEY]"

returns:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "b",
               "short_name" : "b",
               "types" : [ "subpremise" ]
            },
            {
               "long_name" : "1135",
               "short_name" : "1135",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Thomas Lane",
               "short_name" : "Thomas Ln",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Hixson",
               "short_name" : "Hixson",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Chattanooga",
               "short_name" : "Chattanooga",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Hamilton County",
               "short_name" : "Hamilton County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Tennessee",
               "short_name" : "TN",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "37343",
               "short_name" : "37343",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "3744",
               "short_name" : "3744",
               "types" : [ "postal_code_suffix" ]
            }
         ],
         "formatted_address" : "1135 Thomas Ln, Hixson, TN 37343, USA",
         "geometry" : {
            "location" : {
               "lat" : 35.144887,
               "lng" : -85.24711000000001
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 35.1462359802915,
                  "lng" : -85.24576101970851
               },
               "southwest" : {
                  "lat" : 35.1435380197085,
                  "lng" : -85.24845898029152
               }
            }
         },
         "place_id" : "EiUxMTM1IFRob21hcyBMbiwgSGl4c29uLCBUTiAzNzM0MywgVVNB",
         "types" : [ "subpremise" ]
      }
   ],
   "status" : "OK"
}

是的,但是XML和JSON都不知道UNIT B和APT BBBB之间的区别。他们只是回显 unit-I-D,而不管单位类型如何。有用的是地理编码 API,如果给定 unit-I-D,它将 return 单位类型。例如,输入“100+Biscayne+Ave+B+33606 并返回格式地址”100 Biscayne Ave Apt B, Tampa, Florida 33606