我可以轻松地将地理位置数据存储到运行Eve RESTful API Server的MongoDB中。 所以我存储的数据如下:
loc : {
lng: 13.01111,
lat: 51.01111
}
验证等效果很好。
但是:我无法找到从REST API中获取地理定位数据的方法。 那里有sample queries在命令行工作正常,但似乎没有办法以适当的方式查询API。
要说清楚:已经有一个2d索引,并且mongo-cmd的geoWithin queriey工作正常。 它只是关于如何通过REST API进行查询。
答案 0 :(得分:1)
没有提到,但应该支持它。我没有进入geo的东西,但我只是尝试发出$near
查询,并且它返回操作失败,因为我的数据库缺少必要的2dindex。这意味着该命令已正确传递给数据库。
如果您使用像Postman这样的休息客户端,语法应该是这样的(为简单起见,我使用$near
):
?where={"loc": {"$near": {"$geometry":{"type": "Point", "coordinates": [13,51]}}, "$maxDistance": 100}}
如果您使用app.get
方法,请记住json.loads
您的查询。希望这会有所帮助。
答案 1 :(得分:0)
MongoDB中的点可以存储为GeoJSON点对象,
loc : {
type: 'Point',
coordinates: [13.0111, 51.0111]
};
或传统坐标对。
loc : [13.01111, 51.01111]
集合应该有一个索引(分别是2dsphere或2d)来有效地处理查询。
我很确定EVE有一个内置的geoWithin运算符。它只是无法正常工作,因为您正在查询无效的位置格式。