我尝试了各种各样的东西而无法让它发挥作用。目前我有这段代码:
var limitlocation = 5 as Double
if let usergeo = currentuser.objectForKey("location") as? PFGeoPoint {
query.whereKey("location",
nearGeoPoint: usergeo,
withinKilometers: limitlocation)
}
查询用户5英里范围内的内容。我如何制作它以便查询距离用户至少5英里的内容?因此,存储用户的地理位置,并且当用户发布内容时,该地理位置将与内容一起保存。
答案 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 :.