谷歌地图API:如何选择搜索和地址

问题描述:

我正在实施地理编码和放置Google API。第一个从地址返回一些点(lat/long)。第二个从搜索条目返回一些兴趣点。谷歌地图API:如何选择搜索和地址

我想,作为iPhone的地图本地应用程序,以确定用户是否在搜索栏中键入地址,或只是一些关键字。

对于为例,如果I型:

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,如果没有结果,将API。但总是有结果。

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

我终于找到了答案。

iPhone地图本地应用程序不会确定用户是否键入了地址或只是一些关键字。它将Text Search Requests称为地方API的等价物。

文本搜索请求比地方搜索请求更灵活和强大,但消耗在名额有限的10度以上的要求:

无论是谷歌将搜索和谷歌地方文本搜索服务共享相同的使用限制;但是,文本搜索服务需要乘以10倍。也就是说,您制作的每个文本搜索请求将计为针对您的配额的10个请求。

你对我帖子最后一行的问题让我感到畏缩,因为不能保证用户可以在地址中输入这些后缀(它们完全是可选的,格式差别很大)。我以前看过很多,检测关键字不是要走的路。 (此外,名为“自行车街”的商店呢?)

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

此外,here's a brief article描述了使用正则表达式(或常用模式)来识别和提取地址的难度 - 类似于您正在寻找的内容。

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

我建议寻找一个服务,只有有效地址,如果没有结果,然后使用地方API。例如,LiveAddress API by SmartyStreets(我工作的地方)只会返回结果,如果地址可以被解析并且实际存在。看看一些demos看看我的意思。

这应该做你想要完成的。

+0

谢谢。我完全同意你的第一个§。现在你的答案听起来非常重要。我更喜欢一些起点来自己开发一些东西。 – Martin 2012-07-31 13:12:29

+0

那么,解释它将如何 - 但它是一个有用的答案,旨在解决您的问题。我不是说你不应该调查。除了SmartyStreets以外,还有其他提供此类服务的提供商:Melissa Data,QAS,Cdyne等。查看哪一个最适合您的预算和工作流程。 – Matt 2012-07-31 14:03:40

+0

@Martin“开发自己的东西”,你的意思是写你自己的地址地理编码器,或一些示例代码开始? – Matt 2012-07-31 15:25:14