位置搜索:特定地址与本地企业

问题描述 投票:0回答:2

我正在为 iOS 构建一个位置应用程序。我目前有一个搜索栏,可用于搜索本地企业(例如披萨、加油站、银行)。搜索栏文本作为参数添加到 URL 并馈送到 Yahoo Local API。我也想使用相同的搜索栏来查找特定地址,但这不是 API 的功能。 我想我必须:

A) 构建一些可以区分广泛的商业搜索和特定位置搜索的功能。 将业务查询发送到 API 并将地址搜索发送到 CLGeocoder。

B) 寻找更通用的 API。

C) 做一些我还没有考虑过的其他事情。

我可以添加一个单独的搜索字段并将其用于地址搜索,但我想知道是否可以从同一个搜索栏执行此操作。 如果有人可以提供任何建议或指出我正确的方向,我将不胜感激。 谢谢。

ios search geolocation full-text-search
2个回答
0
投票

您可能很难执行 A,因为地址和 POI 是非常自由格式的字符串,尤其是当它们是人类生成的字符串时。我宁愿建议添加某种用户可以切换的开关,以便搜索企业或地址。

对于 B,您可能需要查看 Google 地图 api,如果它满足您的需求。对于输入参数来说,这似乎非常通用。


0
投票

+1 提出一个有趣的问题。这绝对是一个编程设计问题,但也几乎是一个用户体验问题。

我认为你可以在一个领域完成这一切。我在 SmartyStreets 工作,我们解析和处理地址。以下是我从经验中学到的一些与您的问题相关的知识:

  • 不要使用正则表达式来解析或确定地址。太复杂了。正如 Matej 所说,地址有多种不同的形式。 “自由格式字符串”可以是任何东西。使用正则表达式很诱人,但有一种更智能的方法。
  • 很少有位置/地址 API 能够真正提供您正在寻找的值和结果,至少根据其 TOS 是这样。例如,Google、Yahoo! 等要求显示地图,并且不允许自动查询(例如没有用户主动发起请求)。
  • 大多数 API 只执行地址近似,而不执行地址验证。因此,您得到的结果充其量只是一个猜测。谷歌擅长猜测,但返回的结果可能看起来合法,但实际上并不合法。我已经看过很多次了,它让我很痛苦。地理定位/地理编码 API 有其用武之地,但也有其局限性。

举个例子:用户在该文本字段中输入 POI 或地址。您不确定是哪一个还是两者兼而有之。如果您“确实”知道,POI 或地址是否存在?我不知道有哪个(便宜的)API 可以同时执行这两种操作——我见过企业级的 API,但是……可能成本太高了。这是我会尝试的一种更简单的方法。

    查找 CASS 认证的服务来检查地址。 SmartyStreets 的
  1. LiveAddress API

    主页上有不同的演示)就是这样一种服务(价格便宜,甚至对于低流量使用是免费的)。虽然 API 不直接解析单行地址,但使用这个算法(这里有一个工作示例)真的很容易——在 Objective C 中甚至更容易,因为你不必搞乱JSONP 就像在 Javascript 中一样。

  2. 如果 LiveAddress 或同等服务(我鼓励您进行一些研究,如果您还有其他问题,请告诉我 - 我很乐意提供帮助)返回任何结果,则该字符串是一个地址。请注意,一些 CASS 认证的服务也会返回虚假地址或猜测,并且很难/不可能区分两者。 LiveAddress 将仅返回
  3. 有效

    地址。因此,如果 LiveAddress 返回结果(通常是第一个,使用上述算法),则该字符串肯定是一个地址,或者是一个 POI 后跟一个地址。 (是的,LiveAddress 将对每个地址进行地理编码。)

  4. 如果没有返回结果,则为 POI/企业名称。如果您的应用程序遵守 Google 或 Yahoo 的 TOS,请查询他们的 API,因为他们擅长猜测并找到更多类似的通用匹配项。
  5. 甚至另一种选择是首先查询 Maps API,然后使用它返回的地址(如果有)通过 LiveAddress 发送以确保它存在并了解更多信息。

希望能为您指明正确的方向(无双关语)。如果您想澄清任何事情或有任何其他与地址相关的问题,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.