2012-01-10 93 views
2

我已经设置了一个精美的地理空间查询,但是我希望得到每个结果的距离。从Near查询距离“dis”结果查询

鉴于查询:

var query = Query.Near("Location", longitude, latitude); 
var places = mongoDb.GetCollection<Place>("places").Find(near); 

我怎么检索每个元素在“地方”的距离?

回答

3

我不知道你是否可以从mongo得到距离,但是我过去所做的只是使用Haversine公式来获得数据后的距离。

你可以找到,我用 here

编辑实施:对不起,你可以得到的距离蒙戈回来,但不与Query.Near()。您需要使用集合上的GeoNear函数。

mongoDb.GetCollection<Place>("places").GeoNear(Query.Null, latitude, longitude, maxDistance); 

这将返回一个GeoNearResult<Place>这将有一个命中属性,它是IEnumurable<Hit>将包含一个距离属性和文档属性将包含你的地方对象。

+0

你是一个拯救生命的人,就像一个魅力。尽管现在我需要去查找什么测量,也许是弧度? – 2012-01-13 21:00:17

+0

是的,它可能会以弧度表示,在MongoDB文档中他们说它的弧度大概是69英里。但那只是在赤道。你可以在这里找到更多的信息http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-TheEarthisRoundbutMapsareFlat – 2012-01-13 23:52:33