我正在实施地理编码并放置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
,......?
答案 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中的一些,看看我的意思。
这应该做你想要完成的事情。