【问题标题】:Google Geocoding XML response removes apartment/suite numbers谷歌地理编码 XML 响应删除了公寓/套房号码
【发布时间】:2015-01-12 16:50:17
【问题描述】:

使用 Geocode API 时,似乎原始地址中的任何嵌入式公寓或套房号码都已在 XML 响应中删除。这使得无法将返回的地址作为“更正”或“标准化”的格式来保存。

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

  2. 其次,在本例中,“apt B”代表与“A、C、D、E 等”不同的建筑物。因此不同的屋顶地理编码。

任何帮助表示赞赏

发送以下地址:1135 Thomas Ln. Apt B, Hixson, TN 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-maps geocoding google-geocoding-api


【解决方案1】:

您遇到的问题可以追溯到 Google Geocoding API 的核心理念和用例目标:确定结构或设施的纬度/经度坐标并将其绘制在地图上。次要信息(套房、公寓等)一般不是实现该目标所必需的,因此被丢弃或忽略。每个二级编号都有一个结构的交货点,例如Suite 100 的一整栋建筑和 Suite 200 的另一栋建筑并不是特别常见,而且似乎不在 Google Geocoding API 的预期用户范围内。

此外,API 是一种“地址近似”工具,可以猜测地址可能在哪里。例如,如果121 Main Street 有一座建筑物,而125 Main Street 也有,但123 Main Street 不是真实的,它会在121125 之间绘制地址,就好像它在那里一样,即使地址是不存在。

如果您希望验证地址(有或没有辅助信息)以确保它是真实的,然后将其绘制在地图上,有许多服务(免费和付费)可以提供这种行为。对“地址验证”之类的内容进行简单的 Google 搜索,即可为提供验证和地理编码的组织提供大量结果。

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

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

【讨论】:

    【解决方案2】:

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

    中保留“Apt B”数据
    "types" : [ "subpremise" ]
    
    • 子前提 表示指定位置下方的一阶实体,通常是一组建筑物中的单个建筑物,具有 通用名称。

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

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

    返回:

    {
       "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"
    }
    

    【讨论】:

    • 值得注意的是:它与语法相关,因为它将返回 21 Avenue de New York, apartment 1, Paris, France 的子前提,但不会返回 21 Avenue de New York 1, Paris, France。不适用于 block_number/apartment_number 语法。
    【解决方案3】:

    是的,但是 XML 和 JSON 都不知道 UNIT B 和 APT BBBB 之间的区别。它们只是呼应单元 I-D,而不管单元类型如何。如果给定一个 unit-I-D,那么将返回单位类型的地理编码 API 会有所帮助。例如,输入“100+Biscayne+Ave+B+33606”,取回格式化地址“100 Biscayne Ave Apt B, Tampa, Florida 33606”

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多