我正在为iOS构建一个位置应用。我目前有一个搜索栏,可用于搜索本地商家(例如披萨,加油站,银行)。搜索栏文本作为参数添加到URL并提供给Yahoo Local API。我想使用相同的搜索栏来查找特定地址,但这不是API的功能。我想我必须要么:
A)构建一些可以区分广泛的业务搜索和特定位置搜索的功能。将业务查询发送到API并将地址搜索发送到CLGeocoder。
B)寻找更多功能的API。
C)做一些我还没有考虑的事情。
我可以添加一个单独的搜索字段并将其用于地址搜索,但我想知道是否可以从同一个搜索栏进行搜索。如果有人可以提供任何建议或指出我正确的方向,我将不胜感激。感谢。
答案 0 :(得分:0)
你可能很难做A,因为地址和POI是相当自由的字符串,特别是当它们是人类生成的字符串时。我宁愿建议添加某种用户可以切换的开关,以便搜索商家或地址。
对于B,如果满足您的需求,您可能需要查看Google maps api。对于输入参数,这似乎非常通用。
答案 1 :(得分:0)
+1有趣的问题。这绝对是一个编程设计问题,但也几乎是一个UX问题。
我认为你可以在一个领域做到这一切。我为SmartyStreets工作,我们在那里解析和处理地址。以下是我从经验中学到的一些与您的问题有关的事情:
因此,举例说明:用户在该文本字段中键入POI或地址。你不确定它是哪一个或两者都是。如果您 知道,POI或地址是否存在?我不知道一个(廉价的)API同时执行两个 - 我见过的是企业级的API,但是......太多钱可能太多了。这是一个我会尝试的更简单的方法。
查找CASS认证服务以检查地址。 SmartyStreets的LiveAddress API(different demo on homepage)就是这样一种服务(价格便宜,即使是小批量使用也是免费的)。虽然API不直接解析单行地址,但使用 this algorithm (使用a working example here)非常容易 - 在Objective C中它更容易因为你没有不得不像在Javascript中那样混淆JSONP。
如果LiveAddress或同等服务(我鼓励你做一些研究并告诉我你是否有其他问题 - 我很乐意提供帮助),返回任何结果,字符串是一个地址。一些CASS认证的服务,如果被警告,也将返回虚假地址或猜测,并且很难/不可能区分这两者。 LiveAddress只返回有效的地址。因此,如果LiveAddress返回结果(通常是第一个,使用上面的算法),字符串肯定是一个地址,或POI后跟一个地址。 (是的,LiveAddress会对每个地址进行地理编码。)
如果未返回任何结果,那么它就是POI /商家名称。如果你的应用程序遵守谷歌或雅虎的服务条款,请查询他们的API,因为他们擅长猜测并找到更多类似的东西。
甚至另一种选择是首先查询Maps API,然后使用它返回的地址(如果有的话),通过LiveAddress发送它以确保它存在并了解更多信息。
希望指出你正确的方向(没有双关语意)。如果您想澄清任何事情或有任何其他与地址相关的问题,请与我们联系。