2014-09-30 63 views
3

我正在創建一個解析應用程序,我希望能夠使用GeoPoints獲取單個對象一定距離內的所有對象。看似簡單,但下面的代碼返回[](不匹配):使用解析Javascript SDK Query GeoPoint withinMiles

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); 然後它工作順利,並返回所有照片(逢單一個在樣本數據集中所有其他人的5英里範圍內有一個GeoPoint,所以我使用了500000的maxDistance來測試問題的程度)。

問題是我需要能夠限制到一個特定的半徑,這是我認爲「withinMiles」正在做的事情。任何想法我可能做錯了什麼?

回答

4

萬一有人覺得這次和共享我的煩惱,以下是問題:

我是假設所有的解析數據對象的「列」作爲屬​​性對待。即 - 您可以使用。操作員(photo.coordinates)。

實際上,您必須通過photo.get(「座標」)訪問它們才能獲取數據結構中包含的實際對象。

不知道爲什麼上述場景在「near」函數的情況下工作,但是當我開始對Parse數據對象使用get accessor方法時,該行爲正常工作。