【问题标题】:Matching MapKit Places with Facebook Places将 MapKit 地点与 Facebook 地点匹配
【发布时间】:2016-02-18 07:35:24
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    1. 上传照片时保存地理点,然后找到一个库、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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      相关资源
      最近更新 更多