Найти местоположения GeoNear из MongoDB в ASP.NET? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь отфильтровать некоторые местоположения на основе расстояния от моего текущего местоположения.Я сохранил местоположения в mongodb, как показано ниже:

{ 
    "_id" : ObjectId("5c66bb24546c9e0f14a9c76b"), 
    "geoLocation" : {
        "type" : "Point", 
        "coordinates" : [
            23.762865, 
            90.4282826
        ]
    }
}

Теперь, когда я искал вышеуказанное местоположение из моего текущего местоположения, я увидел, что расстояние показывает 226.98475261562422 .

db.locations.aggregate([
    { "$geoNear": {
      "near": {
        "type": "Point",
        "coordinates": [90.426333, 23.7638519]
      },
      "distanceField": "distance",
      "spherical": true,
      "maxDistance": 1000
    }}
])

Я пробовал этот запрос, используя драйвер MongoDB Asp.Net C # , и он возвращал то же местоположение, но я не получил расстояние, хотя.Но я проверил, что если я даю 225 в качестве максимального расстояния, возвращаемый результат будет пустым.

public async Task<List<Entity>> GeoNearAsync(
    Expression<Func<Entity, object>> locationField, double longitude, double latitude, double distance)
{
    var point = new GeoJson2DGeographicCoordinates(longitude, latitude);
    var geoJsonPoint = new GeoJsonPoint<GeoJson2DGeographicCoordinates>(point);
    var nearFilter = Builders<Entity>.Filter.NearSphere(locationField, geoJsonPoint, distance);
    var result = await _collection.Find(nearFilter).ToListAsync();
    return result;
}

Но когда я зашел на карты Google и попытался увидеть расстояние между этими двумя точками, это дало мне 650 метр.

enter image description here

Почему расстояние между двумя точками отличается в mongodb и google map?

Является ли вычисленное расстояние, возвращаемое запросом mongodb, правильным? Если нет, как получить расстояние в mongodb?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...