maxDistance
方法参数的单位类型是什么Query<U>.Near<T>
(在 MongoDB C# 驱动程序中)?
注意:我创建了一个索引,并检查了它是一个“2d”索引:
var keys = IndexKeys<Loc>.GeoSpatial<double[]>(l => l.Coordinates);
var options = IndexOptions.SetName("Loc_Coordinates").SetBackground(true);
Locations.EnsureIndex(keys, options);
并通过以下方式检查索引:
var idxes = Locations.GetIndexes();
foreach (var i in idxes)
{
Program.Log(i.Key);
}
索引是:
{ "_id" : 1 }
{ "Coordinates" : "2d" }
我认为单位应该是弧度,所以我写了这个帮助方法来将米转换为弧度:
const double EarthRadius_m = 6371.01 * 1000d; //m
public static double MeterToRadian(this double meter) { return meter / EarthRadius_m; }
但是如果我使用米(在密集区域),我会得到太多的结果,如果我使用弧度,除非它很大(乘以 1000!),否则我什么也得不到。也许MeterToRadian
有一些问题?或者单位是km
不是m
?(但在网站上,它说是米)。
我通过以下代码查询集合:
var radius = meter.MeterToRadian();
var query = Query<Loc>.Near<double[]>(l => l.Coordinates, lon, lat, radius);
var answer = Locations.Find(query).SetLimit(limit).ToList();