查找附近的人

    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);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值