如何查询超过x英里的parse.com内容?

时间:2015-08-03 21:35:01

标签: ios swift parse-platform

我尝试了各种各样的东西而无法让它发挥作用。目前我有这段代码:

var limitlocation = 5 as Double

if let usergeo = currentuser.objectForKey("location") as? PFGeoPoint {
    query.whereKey("location", 
          nearGeoPoint: usergeo, 
          withinKilometers: limitlocation) 
}

查询用户5英里范围内的内容。我如何制作它以便查询距离用户至少5英里的内容?因此,存储用户的地理位置,并且当用户发布内容时,该地理位置将与内容一起保存。

2 个答案:

答案 0 :(得分:2)

我不知道它的swift,但创建了两个查询:一个是您已经拥有的,另一个是query2,具有相同的对象类型,并使用wherekey:key1 doesNotMatchKey:key2 inQuery:query方法。 key1和key2都应该是objectId,查询应该是你已经拥有的第一个查询。这将返回第一个查询未返回的所有对象。

http://parse.com/docs/ios/api/Classes/PFQuery.html#//api/name/whereKey:doesNotMatchKey:inQuery

编辑 - 修正了转到正确方法的链接。此外,我想指出此查询仍限于1000个结果。我不确定你的用例是什么,但你可能想要一个额外的方法来过滤这些结果,这样你就可以获得最相关的数据,而不是1000个半随机的数据,这些数据恰好超过5公里程。

答案 1 :(得分:0)

此功能在Parse.com的SDK中不存在 - 这是PFQuery类引用:https://www.parse.com/docs/ios/api/Classes/PFQuery.html

您可以执行常规查询并过滤掉用户5英里范围内的位置,正如我在此处提出的问题中所述:How to do a whereKey so it querys posts ___ km+ AWAY from currentuser?

Parse还有一种计算两个geoPoints之间距离的方法:https://www.parse.com/docs/ios/api/Classes/PFGeoPoint.html#//api/name/distanceInMilesTo :.