将MapKit位置与Facebook位置匹配

时间:2016-02-17 20:16:38

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

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

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

1 个答案:

答案 0 :(得分:0)

我认为它似乎是第一次看起来有点复杂。直到Facebook,Apple没有使用相同的数据源作为他们的城市名称,如果您使用的是从FB位置获得的“原始”字符串,那么很难找到名称不完全相同的城市。

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

  1. 上传照片时保存地理位置,然后找到库,API等..根据Facebook城市名称返回纬度经度数据,然后使用此数据查询数据库中最接近的结果(基于照片位置)
  2. 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
    

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