Google Location API vs. Maps:为啥相同的查询会产生不同的结果?

Posted

技术标签:

【中文标题】Google Location API vs. Maps:为啥相同的查询会产生不同的结果?【英文标题】:Google Location API vs. Maps: Why are identical queries yielding different results?Google Location API vs. Maps:为什么相同的查询会产生不同的结果? 【发布时间】:2009-10-22 07:56:56 【问题描述】:

目前,我对 Google 的 AJAX API 有点失望。我所做的是将结构化位置数据转换为 Google 本地搜索 API 查询,以便为用户提供替代的地点结果列表。

例如:

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&key=XXX&hl=en_US&mrt=localonly&rsz=large&q=pizza+Neustadt+DE

但是,API 有时表现得很奇怪,通常没有考虑我传递给它的某些参数。例如:

如果我在 Google 地图上搜索“术语 Rome Roma IT”,它会按预期在罗马找到所有 术语。如果我在 API 上重复相同的搜索,我得到的结果为零(我必须删除“罗马”或“罗马”才能工作——罗马是这里的行政区域,罗马是城市名称)。

为什么会这样?

另一个例子。德国有大约 20 个不同的城镇、城市和自治市镇,称为 Neustadt。现在,当我在 Google 地图上搜索时,它只会找到一个,除非我指定额外的限定符,例如区域或其他内容。

现在,在 API 级别上,我有点期望在传递纬度/经度参数以及对 Neustadt 的查询时,通过查看地理编码来选择正确的 Neustadt 就足够聪明了。但这不会发生,它总是选择同一个 Neustadt 并忽略地理数据。

q=pizza+Neustadt+DE&sll=48.8053,11.7579

我在进行边界框搜索时遇到了类似的问题。边界框似乎被完全忽略了,因为我仍然得到一百公里以外的结果数据:

q=pizza+Neustadt+DE&sll=48.8053,11.7579&sspn=0.00001,0.00001

最后的结果竟然不在同一个城市;小边界框不应该不会产生任何数据吗?我什至可以传递一个大小为零的 BBox,我仍然会得到结果。

我知道本地搜索 API 有一个实际上相当广泛的文档,但它从未详细说明在何时以及如何构建和评估查询时使用哪些参数,这使得获得体面的结果变得非常困难.

您对如何掌握 Google 本地搜索有任何提示、技巧和建议吗?

更新: 我刚刚发现了一些非常奇怪的东西。有人可以去这个网站吗:

http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html

打开 firebug,并在输入此搜索查询时监控 HTTP 流量:

test Rome Roma IT

你会在地图上得到一堆结果。现在复制通过 AJAX 联系的 URL,并在命令行上向它发送请求:

curl "http://www.google.com/uds/GlocalSearch?key=internal-sample&v=1.0&rsz=large&sll=41.97684819454683%2C12.486648559570312&sspn=0.204185%2C0.549316&q=test%20Rome%20Roma%20IT&ls-s-rc=lsc&lscstyle=final&start=0&callback=_callbacks_._5g139yfuc"

现在我得到零结果。怎么可能?这绝对不是键或回调 args,我删除了它们而对该查询的结果没有任何改变。

当查询来自他们的一台服务器时,Google 是否会扩展他们的搜索结果?

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题,这似乎是许可问题的组合,以及 Google 通过其 API 公开的内容以及它在地图/Google 搜索页面中显示的内容是不同搜索的组合(搜索、地图、基地、数据等)

在许可问题上,与通过 API 调用(理论上可以自动化)的请求相比,当用户通过浏览器访问时,Google 似乎可以显示更多信息。

例如,请参阅here。

【讨论】:

感谢您的指点。关于被忽略的 bbox 参数有什么想法吗? 我提供了 sll 参数或地址元素作为“q”术语的一部分,但没有同时提供。 我刚刚用另一个非常奇怪的观察更新了我的问题。你能证实吗?谢谢戴夫。

以上是关于Google Location API vs. Maps:为啥相同的查询会产生不同的结果?的主要内容,如果未能解决你的问题,请参考以下文章

舍入Google Maps API中的place.geometry.location值

google play services location api有时会给出错误的位置

使用Google Play服务位置API来监听位置服务更新

使用 Google API 进行后台位置更新 - Fused Location Provider 不准确

Google Maps Embed API Current Location 作为 iframe 的起点

Google API vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86 系统映像差异