1

使用“st”的查询返回零结果: http ://maps.googleapis.com/maps/api/geocode/json?client=client_id&sensor=false&address=100+main+st%2CAtlanta%2CGA%2CUSA&language=en&signature=sing

{
"results" : [],
"status" : "ZERO_RESULTS"
}

此查询返回地址: http ://maps.googleapis.com/maps/api/geocode/json?client=client_id&sensor=false&address=100+main%2CAtlanta%2CGA%2CUSA&language=en&signature=sign

{
"results" : [ *********** ],
"status" : "OK"
}

这种行为的原因是什么?搜索字符串“100 Main St, Atlanta, GA”在 maps.google.com 上运行良好

4

1 回答 1

1

您在这里同时遇到两个问题。

第一个。你问的是一个不存在的地址;这将极大地影响 api 为您匹配结果的能力。

第二。正如评论中提到的,“st”有一些歧义等。

最终,您的查询将与结果中的每个条目有一些“相关分数”,并且只有高于某个内部阈值的结果才会提供给您。

此匹配阈值受上述两个问题的影响。

100 Main St, Atlanta, GA 不是真实的,也无法解析到某个位置。据我所知,它甚至在 maps.google.com 上都不起作用

当匹配位置(真实与否)时,您输入的文本将很重要。例如,您将结果排除在外的第二个示例实际上是在乔治亚州的 Forest Hills。无论出于何种原因,这都是 b/c,缺少“st”使其能够很好地匹配,以便谷歌尽可能地建议它。但是,对于“st”或“street”,分辨率阈值不是那么好,并且您得到的结果是“零结果”。

使用真实地址,例如:546 main st,您会注意到 ''、'st'、'street' 仍然很重要(它仍然会影响匹配阈值),但不太重要。

这里有些例子:

curl -s 'http://maps.googleapis.com/maps/api/geocode/json?address=546+main,+Atlanta,+GA&sensor=false' | grep formatted | grep 546
         "formatted_address" : "546 Main Street Northeast, Atlanta, GA 30324, USA",
curl -s 'http://maps.googleapis.com/maps/api/geocode/json?address=546+main+st,+Atlanta,+GA&sensor=false' | grep formatted | grep 546
         "formatted_address" : "546 Main Street Northeast, Atlanta, GA 30324, USA",
curl -s 'http://maps.googleapis.com/maps/api/geocode/json?address=546+main+street,+Atlanta,+GA&sensor=false' | grep formatted | grep 546
         "formatted_address" : "546 Main Street Northeast, Atlanta, GA 30324, USA",

现在,结果的顺序和多重性确实有所不同,如果删除“| grep”内容,您可以轻松观察到这一点,但您可以清楚地看到,在所有情况下,对于这个特定地址,您都会得到一个可行的结果。对于“每个”真实地址而言,这可能并非如此,但我认为,如果您追求的真实地址的文本不会过于模糊,我认为您可以合理地期望获得可行的结果,正如上面的评论所说的那样.

于 2013-08-07T23:24:09.150 回答