查找附近的人

    public static List<UserLocationResult> GetNear(double lon, double lat, int pageIndex, int pageSize,long Day,long StartTime)
        {

            double rangeInM = Convert.ToDouble(  ZConfig.GetConfigString("Aotopddistance")  );
            List<UserLocationResult> objList = new List<UserLocationResult>();
            try
            {
                // lat = 24.47871208190918, lon = 118.18478393554690
             var options = DBManager.getGeoNearOption(rangeInM);
            var db = DBManager.getDB();
            var collection = db.GetCollection(TableName);
                IMongoQuery query = Query<UserLocation>.Where(o =>o.Day== Day  && o.StartTime< StartTime);// Query<UserLocation>.Where(o=>o.StartTime>=DateTime.Now.AddHours(8).AddHours(1)  &&  o.Day.Date==DateTime.Now.Date);//<ObjectId>(t => t._id, 0);
               
                var req = collection.GeoNearAs<UserLocation>(query, lon, lat, pageSize * (pageIndex + 1), options).Hits.Skip(pageSize * pageIndex).Take(pageSize);
            if (req != null)
            {

               
                foreach (var item in req)
                {
                    UserLocationResult objResult = new UserLocationResult();
                    objResult.Loc = item.Document;
                        objResult.StartTime = item.Document.StartTime;
                        objResult.EmployeeId = item.Document.EmployeeId;
                        objResult.Day = item.Document.Day;
                        objResult.BillNo = item.Document.BillNo;
                    objResult.Distance = item.Distance;
                    objList.Add(objResult);
                }
            }
            return objList;
            }
            catch (Exception exp)
            {
                NLogger.Error("查询附近的人:"+ exp.ToString());
                return objList;
            }
        }

  

  public class DBManager
    {
        public static double earthRadius = 6378137.0; // m
        public static MongoDatabase getDB()
        {
            string connectionStr = ZConfig.GetConfigString("MongoDB");
            MongoClient client = new MongoClient(connectionStr);
            MongoServer server = client.GetServer();
            MongoDatabase db = server.GetDatabase(ZConfig.GetConfigString("MongoDB_DBNAME")  );
            return db;
        }

        public static GeoNearOptionsBuilder getGeoNearOption(double rangeInM)
        {
            return GeoNearOptions.SetMaxDistance(rangeInM / earthRadius /* to radians */)
                                                .SetSpherical(true).SetDistanceMultiplier(earthRadius);
        }
    }

 

你可能感兴趣的:(查找附近的人)