当我想做
之类的事情时,我有一个特例let predicate = NSPredicate(format:"
DISTANCE(\(UserLocation),photoLocation) <= visibleRadius AND
DISTANCE(\(UserLocation),photoLocation" <= 10)"
var query = PFQuery(className:"Photo", predicate:predicate)
基本上,我想要get all photos that are taken within 10km around my current location if my current location is also within the photo's visible radius
此外,photoLocation
和visibleRadius
是数据库中的两列,我将提供UserLocation
作为PFGeoPoint。
有可能实现这一目标吗?在我看来,我不认为我可以调用photoLocation.latitude
来获取特定的坐标值。我可以吗?
如果可以实现,我会非常感激你!!
答案 0 :(得分:0)
我在这里的pares.com
文档中发现这是link
let swOfSF = PFGeoPoint(latitude:37.708813, longitude:-122.526398)
let neOfSF = PFGeoPoint(latitude:37.822802, longitude:-122.373962)
var query = PFQuery(className:"PizzaPlaceObject")
query.whereKey("location", withinGeoBoxFromSouthwest:swOfSF, toNortheast:neOfSF)
var pizzaPlacesInSF = query.findObjects()
此代码将获取swOfSF
&amp;所定义的矩形区域中的所有对象。 neOfSF
objectc,其中seOfSF位于西南角,neOfSF位于东北角。
您可以对代码进行一些更改,并获取对象位于中间的矩形区域中的所有对象
我建议您不要使用半径,因为这需要大量的计算。而是使用矩形区域(就像我给你的代码一样)。
计算最大/最小经度和最大值从您的位置获取最大/最小纬度并获取其间的所有对象。你可以阅读有关如何罚款最小/最大经度和纬度在这里Link
答案 1 :(得分:0)
我设法使用Parse Cloud Code解决它,这里是the quick tutorial
Parse.Cloud.define("latestPosts", function(request, response) {
var limit = 20;
var query = new Parse.Query("Post");
var userLocation = request.params.userLocation;
var searchScope = request.params.searchScope;
var afterDate = request.params.afterDate;
var senderUserName = request.params.senderUserName;
query.withinKilometers("Location", userLocation, searchScope);
query.greaterThan("createdAt", afterDate);
query.notEqualTo("senderUserName",senderUserName);
query.ascending("createdAt");
query.find({
success: function(results) {
var finalResults = results.filter(function(el) {
var visibleRadius = el.get("VisibleRadius");
var postLocation = el.get("Location");
return postLocation.kilometersTo(userLocation) <= visibleRadius;
});
if (finalResults.length > limit) {
var slicedFinalResults = results.slice(0, 20);
response.success(slicedFinalResults);
} else {
response.success(finalResults);
}
},
error: function() {
response.error("no new post");
}
});
});
上面的代码说明了如何使用Cloud Code的基本示例。除此之外,我必须确保所有返回的图像都在用户的搜索范围和照片的可见圆圈的组合中。还有更多技术,例如Promises
。但就我的目的而言,上面的代码就足够了。