我认为它看起来有点复杂,因为它似乎是第一次。在 Facebook 之前,Apple 没有为其城市名称使用相同的数据源,如果您使用从 FB 位置获得的“原始”字符串,那么很难找到名称不完全相同的城市。
也许有更简单的方法来实现它,但我的第一次尝试将涵盖这些选项:
- 上传照片时保存地理点,然后找到一个库、API 等,它会根据 Facebook 城市名称返回一个纬度经度数据,然后使用它来查询数据库中最接近的结果(基于照片位置)
2。
假设用户输入了一个城市名称,并且您有一个带有所需城市名称的字符串值(称为rawCity)。现在rawCity 应该包含在或等于代表城市 Mapkit 名称的字符串中。
让我们将rawCity 分配给一个名为searchStringCity 的新字符串,并从中删除空格并使整个字符串小写(非ascii 字符也会造成一些麻烦)。
现在您有两个应该添加到字典中的字符串:/伪代码/
rawCity = Sample City Name
searchStringCity = yoursamplecity
fbCityDictionary = {rawName:rawCity, searchString:searchStringCity}
拥有fbCityDictionary 后,您就可以使用 Facebook 部分了。
作为第二步,您需要一些与数据库相关的工作,所以接下来我将在我的数据库中创建一个searchString 列,并用 Mapkit 类型的“标准化”(删除空格、大写字母、字符编码的东西)名称填充它城市名。
现在您可以编写一个查询,其中 db 项的 searchString 值等于 fbCityDictionary[searchString]。但是它不能完美地解决您的问题,当空格或小写/大写字母是问题时它会起作用,但是有很多城市名称没有英文版本,它们在不同的地方可能会有很大的不同地图数据库。
所以你会很好地处理这些例子:
Facebook version:
Sample City Name ---> samplecityname
Mapkit version:
Samplecity Name ---> samplecityname
这些解决方案可以改善结果,但我很想听到更好的解决方案。