我想使用 GeoPoints 搜索两个给定距离之间的位置。使用当前的 api,我想我可以做出这样的伪算法:
query.whereWithinKilometers("方向", GlobalData.ownerGeoPoint, MAXIMUM distance);
减
query.whereWithinKilometers("directions", GlobalData.ownerGeoPoint, MINIMUM distance);
我怎样才能翻译成真正的代码?
我想使用 GeoPoints 搜索两个给定距离之间的位置。使用当前的 api,我想我可以做出这样的伪算法:
query.whereWithinKilometers("方向", GlobalData.ownerGeoPoint, MAXIMUM distance);
减
query.whereWithinKilometers("directions", GlobalData.ownerGeoPoint, MINIMUM distance);
我怎样才能翻译成真正的代码?
最后我找到了一种使用解析查询的方法。
// Do not want locations further than maxDistance
ParseQuery query = ParseQuery.getQuery("MyData");
query.whereWithinKilometers("location", userGeoPoint, maxDistance);
// Do not want locations closer than minDistance
ParseQuery<ParseObject> innerQuery = ParseQuery.getQuery("MyData");
innerQuery.whereWithinKilometers("location", userGeoPoint, minDistance);
query.whereDoesNotMatchKeyInQuery("objectId", "objectId", innerQuery);
可能您必须在 Parse 到您的应用程序的最大距离内提取所有内容,然后在您的应用程序内部过滤掉任何比最小值更近的内容。
值得庆幸的是,Parse 包含一些距离测量作为 PFGeoPoint 的一部分。在这里查看三种方法。
所以你的伪代码是:
(After you get back everything within the outer radius)
Make a new array (var) called finalList
For i = 0; i < objects.count; i++ {
var gp: PFGeoPoint = objects[i]
if gp.distanceInMilesTo:originalGeoPoint >= minimumRadiusInMiles {
finalList.push(gp)
}
}