我正在使用我的应用程序将城市名称的照片保存到服务器。首先,我使用纬度和经度获取MapKit
的城市名称,然后将照片和城市名称保存到数据库。之后,当用户想要搜索照片时,他/她会写入城市名称,并使用Facebook Places(Graph API)自动完成。
问题是Facebook Places和MapKit
可能有不同的名称(拼写)。即使他们都是英文。我想知道如何使用Facebook Places城市从我自己的服务器查询其中有MapKit
个城市。
答案 0 :(得分:0)
我认为它似乎是第一次看起来有点复杂。直到Facebook,Apple没有使用相同的数据源作为他们的城市名称,如果您使用的是从FB位置获得的“原始”字符串,那么很难找到名称不完全相同的城市。
也许有一种更简单的方法来实现它,但我的第一次尝试将涵盖这些选项:
2。
假设用户输入了城市名称,并且您具有所需城市名称的字符串值(称为rawCity
)。现在rawCity
应该包含在或代表城市Mapkit名称的字符串中。
让我们将rawCity
分配给一个名为searchStringCity
的新字符串,并从中删除空格并使整个字符串小写(非ascii字符也会造成一些麻烦)。
现在你有两个字符串应该添加到字典中:/ Pseudo code /
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
这些解决方案可以改善结果,但我很想听听更好的解决方案。