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 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 系统映像差异