Google地图API:如何在搜索和地址之间进行选择

时间:2012-07-31 12:33:30

标签: google-maps-api-3 geocoding google-places-api google-geocoding-api

我正在实施地理编码并放置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。但总会有结果。

我应该检测一些关键字,例如streethighway,......?

2 个答案:

答案 0 :(得分:0)

我终于找到了答案。

iPhone Map本机应用程序无法确定用户是键入了地址还是仅键入了某些关键字。它使用Text Search Requests调用等效的地方API。

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

  

Google商家信息搜索和Google商家信息搜索服务共享相同的使用限制;但是,文本搜索服务需要10倍的乘数。也就是说,您所做的每个文本搜索请求将被视为针对您的配额的10个请求。

答案 1 :(得分:-1)

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

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

此外,here's a brief article描述了使用正则表达式(或常见模式)识别和提取地址的难度 - 类似于您想要做的事情。

Google的地理编码API始终为您提供结果的原因是因为它确实解决了近似 - 如果该地址不存在,Google会尽其所能:它会搜索要显示的内容无论如何,你正在寻找的东西。如果您键入一个不存在的地址,它仍会显示结果,因为它会插入并组成数据,因此您仍然可以继续操作。这有时很有用,但在这里它可以咬你。

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

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