0

我想使用 GeoPoints 搜索两个给定距离之间的位置。使用当前的 api,我想我可以做出这样的伪算法:

query.whereWithinKilometers("方向", GlobalData.ownerGeoPoint, MAXIMUM distance);

query.whereWithinKilometers("directions", GlobalData.ownerGeoPoint, MINIMUM distance);

我怎样才能翻译成真正的代码?

4

2 回答 2

2

最后我找到了一种使用解析查询的方法。

// 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);
于 2015-03-19T13:56:50.663 回答
1

可能您必须在 Parse 到您的应用程序的最大距离内提取所有内容,然后在您的应用程序内部过滤掉任何比最小值更近的内容。

值得庆幸的是,Parse 包含一些距离测量作为 PFGeoPoint 的一部分。在这里查看三种方法。

  1. distanceInRadiansTo:
  2. distanceInMilesTo:
  3. 距离InKilometersTo:

所以你的伪代码是:

(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)
   }
}
于 2015-02-27T06:52:30.140 回答