我正在将带有城市名称的照片保存到我的应用程序中的服务器。首先,我使用 MapKit
使用纬度和经度获取城市名称,然后将照片和城市名称保存到数据库中。稍后,当用户想要搜索照片时,他/她会写下城市名称,我会使用 Facebook Places(Graph API)自动完成功能。
问题是 Facebook Places 和 MapKit
可能有不同的名称(拼写)。即使它们都是英文的。我想知道如何从我自己的服务器中查询,其中包含 MapKit
城市以及 Facebook Places 城市。
最佳答案
我认为它比第一次看起来要复杂一些。在 Facebook 和 Apple 之前,他们的城市名称都没有使用相同的数据源,如果您使用从 FB 位置获得的“原始”字符串,则很难找到名称不完全相同的城市。
也许有一种更简单的方法来实现它,但我的第一次尝试将涵盖以下选项:
- 在上传照片时保存地理点,然后找到一个库、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/