我是其他付费地理编码服务的客户,目前正在评估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存在,但在这种情况下它不会显示在结果中。
在我的情况下,这些结果不适用于严肃的制作或商业应用,除非我错过了额外的查询参数。
边界框也不可能,因为我没有城市的坐标。这将使我运行两次查询,这将导致双倍成本和双重使用。
比较邮政编码只会导致功能非常严格。
那么,我们怎样才能根据查询找出地址不完全匹配?有没有我错过的参数?
答案 0 :(得分:0)
我找不到任何官方文档但是通过这个社区的一些答案我发现ROOFTOP意味着最准确的结果。
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”并告诉系统认为你得到了正确的结果。 可能需要更改过滤组件以确保管理与政治边界不同。