public ActionResult GetRealTimeCircleVehicles(GetCircleRealTimeSingalsModel model) { List <RealTimeSignalModel> list; if (base.VehicleViewMode) { list = SignalBLL.GetDefaultRealTimeSingalsByCircle(model, base.CurrentStrucID); } else { list = SignalBLL.GetRealTimeSingalsByCircle(model, base.CurrentUserID); } if (list == null) { list = new List <RealTimeSignalModel>(); } List <dynamic> resultList = new List <dynamic>(); foreach (var item in list) { resultList.Add(new { VID = item.VID, VN = item.VehicleName, SN = item.StrucName, Speed = item.Speed, VIN = item.VIN, SignalTime = item.SignalDateTime.ToString("yyyy-MM-dd HH:mm:ss"), Icon = item.Icon, Address = item.Address == null ? string.Empty : item.Address, Latitude = item.Latitude, Longitude = item.Longitude, Direction = GetDirection(item.Direction), Angle = item.Direction, IsOnline = item.IsOnline == 1, IsRunning = item.IsRunning == 1, Mileage = item.Mileage, OilHeight = item.OilHeight, Temperature = item.Temperature, ACCState = item.ACCState == true ? "ON" : "OFF", RollerState = item.RollerState, PlateColor = item.PlateColor, VehicleType = item.VehicleType, FlagState = (item.PressureFlag == true ? @DisplayText.PressureUnloading + "," : "") + (item.DoorsensorFlag == true ? @DisplayText.DoorOpen : ""), }); } return(Json(resultList, JsonRequestBehavior.AllowGet)); }
/*求已知经纬度两点距离公式 * //EARTH_RADIUS*2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); */ /// <summary> /// 圆形区域查车 自由模式 /// </summary> /// <param name="model"></param> /// <param name="currentUserID"></param> /// <returns></returns> public static List <RealTimeSignalModel> GetRealTimeSingalsByCircle(GetCircleRealTimeSingalsModel model, int currentUserID) { //纠偏 PointModel point = NetDecryFixFalse(model.Lng, model.Lat); model.Lng = point.Longitude; model.Lat = point.Latitude; //目前用车代号代替 string sql = @"SELECT sg.* FROM dbo.VW_GetRealTimeSignals sg INNER JOIN dbo.Func_New_GetVehicleIDByUserId(@userID) vids ON sg.VID=vids.VehicleID WHERE 6378138.0*2*ASIN(SQRT(POWER(SIN((@lat*PI()/180-sg.Latitude*PI()/180)/2),2)+ COS(@lat*PI()/180)*COS(sg.Latitude*PI()/180)*POWER(SIN((@lng*PI()/180-sg.Longitude*PI()/180)/2),2)))<@radius"; SqlParameter[] paras = new SqlParameter[4]; paras[0] = new SqlParameter() { ParameterName = "@userID", Value = currentUserID, SqlDbType = SqlDbType.Int }; paras[1] = new SqlParameter() { ParameterName = "@lat", Value = model.Lat, SqlDbType = SqlDbType.Float }; paras[2] = new SqlParameter() { ParameterName = "@lng", Value = model.Lng, SqlDbType = SqlDbType.Float }; paras[3] = new SqlParameter() { ParameterName = "@radius", Value = model.Radius, SqlDbType = SqlDbType.Float }; return(ConvertToList <RealTimeSignalModel> .Convert(MSSQLHelper.ExecuteDataTable(CommandType.Text, sql, paras))); }