您在这里同时遇到两个问题。
第一。你问的是一个不存在的地址;这将极大地影响 api 为您匹配结果的能力。
第二。正如 cmets 中提到的,“st”有一些歧义等。
最终,您的查询将与结果中的每个条目有一些“相关性分数”,并且只有高于某个内部阈值的结果才会提供给您。
此匹配阈值受上述两个问题的影响。
100 Main St, Atlanta, GA 不是真实的,也无法解析到某个位置。据我所知,它甚至在 maps.google.com 上都不起作用
在匹配位置(无论是否真实)时,您输入的文字很重要。
例如你的第二个例子实际上是在乔治亚州的森林山。
无论出于何种原因,这都是 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”内容,您可以轻松观察到这一点,但您可以清楚地看到,在所有情况下,对于这个特定地址,您都会得到一个可行的结果。
对于“每个”真实地址而言,这可能并非如此,但我认为,如果您追求的真实地址的文本不会过于模糊,就像上面的 cmets 所说的那样,您可以合理地期望获得可行的结果.