zoukankan      html  css  js  c++  java
  • 查找附近的人

        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);
            }
        }
  • 相关阅读:
    python3.5以上版本,typing模块提高代码健壮性
    psutil模块使用
    不懂前后端分离?这篇就够了
    k8s krew 插件管理工具
    metrics-server 安装问题解决
    k8s dashboard 解决secret自建证书导致浏览器访问限制
    创建私有 Gems 源
    windows10 使用WSL(ubuntu系统,xshell连接)
    将 Oracle VirtualBox 中运行的虚拟机导入 VMware Fusion、Workstation 或 Player
    conflunce安装配置
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/6003833.html
Copyright © 2011-2022 走看看