3

我正在创建一个 Parse 应用程序,我希望能够使用 GeoPoints 获取单个对象一定距离内的所有对象。看起来很简单,但是下面的代码返回 [] (没有匹配):

app.get('/photos', function(req, res) {

   var Photo = Parse.Object.extend("Photo");

   var query = new Parse.Query(Photo);
   query.equalTo("owner", Parse.User.current());
   query.find({
     success: function(results) {
       // Do something with the returned Parse.Object values
       //res.send(results);
       var photo = results[0];

       // Create a query for places
      var Photo = Parse.Object.extend("Photo");
      var query = new Parse.Query(Photo);
      // Interested in photos taken near this photo.
      query.withinMiles("coordinates", photo.coordinates, 500000);

      // Final list of objects
      query.find({
        success: function(photoObjects) {
           res.send(photoObjects);
        },
        error: function(error) {
         alert("Error: " + error.code + " " + error.message);
        }
      });
     },
     error: function(error) {
       alert("Error: " + error.code + " " + error.message);
     }
   });
});

奇怪的是,如果我将这条线更改为 query.withinMiles("coordinates", photo.coordinates, 500000);query.near("coordinates", photo.coordinates); 那么它可以顺利工作并返回所有照片(每张照片都有一个 GeoPoint,位于样本数据集中所有其他照片的大约 5 英里半径范围内,所以我使用了 500000 的 maxDistance 来测试问题的程度)。

问题是我需要能够限制到一个特定的半径,这就是我认为“withinMiles”正在做的事情。有什么想法我可能做错了吗?

4

1 回答 1

4

如果有人发现这个并分享我的麻烦,以下是问题:

我假设解析中数据对象的所有“列”都被视为属性。ie - 您可以使用 . 运算符(照片.坐标)。

事实上,您必须通过 photo.get("coordinates") 访问它们才能获取数据结构中包含的实际对象。

不知道为什么上述场景在“near”函数的情况下有效,但是当我开始对 Parse 数据对象使用 get 访问器方法时,该行为正常工作。

于 2014-09-30T20:15:09.537 回答