Google地理编码API - 相关性

时间:2016-06-23 22:41:39

标签: google-maps google-maps-api-3 google-geocoder

我是其他付费地理编码服务的客户,目前正在评估Google的地理编码API。我知道已经有很多问题,但我还没有找到答案。

请自行运行此查询以了解问题。

正确的街道是“semptstr”。使用小错误“semstr”运行查询会产生令人困惑的结果。

https://maps.googleapis.com/maps/api/geocode/json?address=semstr. 21 85457 woerth Germany&key={{YOUR KEY}}

如果您对地址进行地理编码,则会打印location_type“ROOFTOP”,我认为这是直接匹配。

地址地理编码为以下

{
"results" : [
  {
     "address_components" : [
        {
           "long_name" : "21",
           "short_name" : "21",
           "types" : [ "street_number" ]
        },
        {
           "long_name" : "Seestraße",
           "short_name" : "Seestraße",
           "types" : [ "route" ]
        },
        {
           "long_name" : "Rettenbach",
           "short_name" : "Rettenbach",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Oberpfalz",
           "short_name" : "Oberpfalz",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "Bayern",
           "short_name" : "BY",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "Deutschland",
           "short_name" : "DE",
           "types" : [ "country", "political" ]
        },
        {
           "long_name" : "93191",
           "short_name" : "93191",
           "types" : [ "postal_code" ]
        }
     ],
     "formatted_address" : "Seestraße 21, 93191 Rettenbach, Deutschland",
     "geometry" : {
        "location" : {
           "lat" : 49.07218,
           "lng" : 12.45707
        },
        "location_type" : "ROOFTOP",
        "viewport" : {
           "northeast" : {
              "lat" : 49.07352898029149,
              "lng" : 12.4584189802915
           },
           "southwest" : {
              "lat" : 49.07083101970849,
              "lng" : 12.4557210197085
           }
        }
     },
     "partial_match" : true,
     "place_id" : "ChIJHdXdJbnhn0cRgImKyuFq2UM",
     "types" : [ "street_address" ]
  }
],
 "status" : "OK"
}

如果你看一下 ROOFTOP 的结果,就没有关于准确性的字段。我认为 ROOFTOP 是完全匹配的。

实际上它甚至没有关闭查询的位置。邮政编码93191位于不同的城市,距离酒店约150公里。

我正在寻找相关参数。我知道APPROXIMATE,INTERPOLATED存在,但在这种情况下它不会显示在结果中。

在我的情况下,这些结果不适用于严肃的制作或商业应用,除非我错过了额外的查询参数。

边界框也不可能,因为我没有城市的坐标。这将使我运行两次查询,这将导致双倍成本和双重使用。

比较邮政编码只会导致功能非常严格。

那么,我们怎样才能根据查询找出地址不完全匹配?有没有我错过的参数?

3 个答案:

答案 0 :(得分:0)

我找不到任何官方文档但是通过这个社区的一些答案我发现ROOFTOP意味着最准确的结果。

根据发布的帖子herehere -

API将返回ROOFTOP,GEOMETRIC_CENTER,RANGE_INTERPOLATED或APPROXIMATE。 屋顶基本上是#34;死在" - API将地址解析为建筑物。除此之外,你会得到不同程度的关闭"。

" ROOFTOP" - > 9 [其他所有] - > 4到8(也就是文字字符串也可以阅读" GARBAGE")

答案 1 :(得分:0)

找出地址是否完全匹配的好方法是使用地址验证。提供此服务的服务有很多,例如MelissaData,Everything Location和SmartyStreets。

以下是SmartyStreets的输出结果示例

一个。 semstr. 21 85457 woerth Germany

B中。 semptstr. 21 85457 woerth Germany

请注意B如何显示地址已完全验证,因此比A更正确。 (查看分析部分)。

有关地址是否经过验证的信息会告诉您该地址是否完全匹配。

免责声明:我为SmartyStreets工作。

答案 2 :(得分:0)

使用api时,您可以将结果限制为绑定框。该计算将产生近似结果类型。如果未在框内找到,则不会返回任何结果。您还可以限制为区域:“& region = zyx” 您也可以使用组件限制它。一个组件可以是邮政编码,邮政编码。诀窍是,当没有找到结果时,api将返回组件本身的结果。我认为这就是这里发生的事情。 我看到你的状态代码返回“OK”并告诉系统认为你得到了正确的结果。 可能需要更改过滤组件以确保管理与政治边界不同。