2

我正在实施地理编码和放置 Google API。第一个从地址返回一些点(纬度/经度)。第二个从搜索条目中返回一些兴趣点。

作为 iphone Map 原生应用程序,我想确定用户是否在搜索栏中输入了地址,或者只是一些关键字。

例如,如果我输入:

9 bicycle Street, New York => address, use Geocoding API
9 bicycle Street => Geocoding API
bicycle street   => Geocoding API
bicycle        => Place API
bicycle shop   => Place API

我尝试始终调用地理编码 API,如果没有结果,则调用 Place API。但总会有结果。

我应该检测一些关键字,例如street, highway, ... 吗?

4

2 回答 2

0

我终于找到了答案。

iPhone Map 本机应用程序无法确定用户是否键入了地址或仅键入了一些关键字。它使用Text Search Requests调用相当于 place API 。

文本搜索请求比地方搜索请求更灵活、更强大,但在您的有限配额中消耗的请求数是 10 倍:

Google Place Search 和 Google Places Text Search 服务共享相同的使用限制;但是,文本搜索服务需要 10 倍的乘数。也就是说,您发出的每个文本搜索请求都将计为 10 个请求,而不是您的配额。

于 2012-09-18T09:01:25.923 回答
-1

您在帖子最后一行提出的问题让我感到畏缩,因为无法保证用户会在地址中输入这些后缀(它们完全是可选的,格式差异很大)。我以前见过很多,检测关键字不是要走的路。(另外,叫“自行车街”的店呢?)

我鼓励您在这里查看我的答案,我在这里讨论识别或解析地址的难度。有一些例子显示了一些看起来很疯狂的地址仍然是有效的地址,而不是地名。

此外,这里有一篇简短的文章,描述了使用正则表达式(或常见模式)来识别和提取地址的困难——类似于您正在寻求做的事情。

谷歌的地理编码 API 总是给你一个结果的原因是因为它确实地址近似- 如果地址不存在,谷歌会做它最擅长的事情:它会搜索一些东西来显示给你,你正在寻找的东西. 如果您键入一个不存在的地址,它仍然会显示结果,因为它会插入和组成数据,因此您仍然可以继续进行操作。这有时很有用,但在这里它会咬你。

我建议寻找仅对有效地址进行地理编码的服务,如果没有结果,则使用 places API。例如,SmartyStreets(我工作的地方)的 LiveAddress API 只有在地址可以解析并且实际存在的情况下才会返回结果。查看一些演示以了解我的意思。

这应该做你想要完成的事情。

于 2012-07-31T12:48:57.380 回答