• 查找附近的人


        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);
            }
        }
  • 相关阅读:
    Eolink接口管理工具应用
    【内有红包封面】如何简单设计接口测试用例
    IDEA 激活 JRebel教程
    springboot 集成添加 Swagger3 支持
    Kubernetes部署官网Dashboard
    Kubernetes部署第三方Dashboardkuboard
    Kubernetes部署CoreDNS
    项目初始化报 404 Not Found GET https://registry.npmjs.org(转)
    vue项目初始化出现tar ENOENT: no such file or directory错误的解决办法。(转)
    Debian / Ubuntu 系统怎么缩短 shell 路径(转)
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/6003833.html
Copyright © 2020-2023  润新知