ios - 将 MapKit 地点与 Facebook 地点相匹配

标签 ios objective-c swift facebook-graph-api mapkit

我正在将带有城市名称的照片保存到我的应用程序中的服务器。首先,我使用 MapKit 使用纬度和经度获取城市名称,然后将照片和城市名称保存到数据库中。稍后,当用户想要搜索照片时,他/她会写下城市名称,我会使用 Facebook Places(Graph API)自动完成功能。

问题是 Facebook Places 和 MapKit 可能有不同的名称(拼写)。即使它们都是英文的。我想知道如何从我自己的服务器中查询,其中包含 MapKit 城市以及 Facebook Places 城市。

最佳答案

我认为它比第一次看起来要复杂一些。在 Facebook 和 Apple 之前,他们的城市名称都没有使用相同的数据源,如果您使用从 FB 位置获得的“原始”字符串,则很难找到名称不完全相同的城市。

也许有一种更简单的方法来实现它,但我的第一次尝试将涵盖以下选项:

  1. 在上传照片时保存地理点,然后找到一个库、API 等,根据 Facebook 城市名称返回给您经纬度数据,然后用它来查询数据库中最接近的结果(基于照片位置)

2. 假设用户输入了城市名称,并且您有一个包含所需城市名称的字符串值(称为 rawCity)。现在 rawCity 应包含在或等于表示城市 Mapkit 名称的字符串。

让我们将 rawCity 分配给一个名为 searchStringCity 的新字符串,并从中删除空格并使整个字符串小写(非 ascii 字符也会带来一些麻烦)。

现在您有两个字符串应添加到字典中:/Pseudo code/

rawCity = Sample City Name

searchStringCity = yoursamplecity

fbCityDictionary = {rawName:rawCity, searchString:searchStringCity}

获得 fbCityDictionary 后,您就可以开始 Facebook 部分了。

作为第二步,您需要一些与数据库相关的工作,因此接下来我将在数据库中创建一个 searchString 列,并用“标准化”填充它(删除空格、大写字母、字符编码内容) Mapkit 类型城市名称的名称。

现在您可以编写一个查询,其中数据库项的 searchString 值等于 fbCityDictionary[searchString]。然而,它并不能完美解决您的问题,当出现空格或小写/大写字母问题时,它会起作用,但是有很多城市名称没有英文版本,并且它们在不同的情况下可能有很大不同 map 数据库。

所以你会擅长处理像这样的例子:

Facebook version:

Sample City Name ---> samplecityname 

Mapkit version:

Samplecity Name ---> samplecityname

这些解决方案可以改善结果,但我很想听到更好的解决方案。

关于ios - 将 MapKit 地点与 Facebook 地点相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35466863/

相关文章:

ios - 如何使用 Core Data 按部分字母顺序对 tableView 中的数据进行排序?

ios - (Xcode 8 swift 3)。将自定义键盘扩展与特定文本字段一起使用

ios - 如何使用为其他UIViewController生成UITableView?

swift - 如何在 Swift 中随机选择一个枚举

iphone - 将日期字符串与 NSPredicate 进行比较

ios - Xcode 6.1 一直告诉我一些 PartialInfo.plist 无法打开

iphone - iPad 模态视图 Controller 以纵向方式运行,即使它是横向的

ios - 在 binutils 中运行 objdump 时无法识别文件格式

swift - 使用 Swift 通过 Firebase 进行多标签搜索

ios - 如何修复 "Dictionary literal contains duplicate keys "?