/// <summary> /// 根据客户端发来的Graphic,在地图上画出该Graphic /// Graphic以Json串形式发来 /// </summary> /// <param name="json"></param> public static void DrawBufferByJSON(JObject json) { PublicParams.pubMainMap.Dispatcher.BeginInvoke(new Action(() => { try { Geometry geometry = Geometry.FromJson(json["GRAPHIC"]["Geometry"].ToString()); Graphic graphic = new Graphic() { Geometry = geometry }; switch (json["TYPE"].ToString()) { case "Polygon": graphic.Symbol = PublicParams.fillSymbol; break; case "Polyline": graphic.Symbol = PublicParams.lineSymbol; break; default: break; } MapLayers.AddGraphicToGLayerByLayerID(graphic, PublicParams.gLayerDrawing); } catch (Exception) { } })); }
/// <summary> /// LPY 2016-3-24 添加 /// 清空测距离和面积的图层 /// </summary> public static void ClearLengthOrAreaLayer() { PublicParams.pubMainMap.Dispatcher.BeginInvoke(new Action(() => { try { MapLayers.ClearGLayerByID(PublicParams.gLayerLengthOrArea); } catch (Exception) { } })); }
public static void ShowSearchCamerasByJson(JObject json) { PublicParams.pubMainMap.Dispatcher.BeginInvoke(new Action(() => { try { Geometry geometry = Geometry.FromJson(json["GRAPHIC"]["Geometry"].ToString()); Graphic graphic = new Graphic() { Geometry = geometry, Symbol = PublicParams.symbolSearchCameras }; MapLayers.AddGraphicToGLayerByLayerID(graphic, PublicParams.gLayerSearchCamerasNearCrime); } catch (Exception) { } })); }
/// <summary> /// LPY 2016-3-25 添加 /// 根据JSON,在大屏上标出测量的距离或者面积结果 /// </summary> /// <param name="json"></param> public static void ShowLengthOrAreaByJSON(JObject json) { PublicParams.pubMainMap.Dispatcher.BeginInvoke(new Action(() => { try { string result = json["RESULT"].ToString(); Geometry geometry = Geometry.FromJson(json["GRAPHIC"]["Geometry"].ToString()); Graphic graphic = new Graphic() { Geometry = geometry }; switch (json["TYPE"].ToString()) { case "Polygon": graphic.Symbol = PublicParams.areaSymbol; break; case "Polyline": graphic.Symbol = PublicParams.lengthSymbol; break; default: break; } MapLayers.AddGraphicToGLayerByLayerID(graphic, PublicParams.gLayerLengthOrArea); double xCenter = (graphic.Geometry.Extent.XMax + graphic.Geometry.Extent.XMin) / 2;//查找中心点 double yCenter = (graphic.Geometry.Extent.YMax + graphic.Geometry.Extent.YMin) / 2; MapPoint mpCenter = new MapPoint(xCenter, yCenter, graphic.Geometry.SpatialReference); TextSymbol txtSymbol = PublicParams.textSymbol; Graphic gResult = new Graphic() { Geometry = mpCenter, Symbol = txtSymbol }; gResult.Attributes["Result"] = result; gResult.SetZIndex(2); MapLayers.AddGraphicToGLayerByLayerID(gResult, PublicParams.gLayerLengthOrArea); } catch (Exception) { } })); }
private void DrawPoliceCarByJson(JObject json) { try { Graphic gPoliceCar = MapLayers.GetGraphicFromGLayerByID("TITLE", json["TITLE"].ToString(), PublicParams.gLayerPoliceCarGPS); if (gPoliceCar != null) { gPoliceCar.Geometry = new MapPoint((double)json["X"], (double)json["Y"], new SpatialReference(4326)); gPoliceCar.Attributes["X"] = (double)json["X"]; gPoliceCar.Attributes["Y"] = (double)json["Y"]; MapLayers.RefreshGLayerByID(PublicParams.gLayerPoliceCarGPS); if (PublicParams.pubInfoWin.IsOpen == true && (PublicParams.pubInfoWin.Content as JObject)["TITLE"].ToString() == gPoliceCar.Attributes["TITLE"].ToString()) { PublicParams.pubInfoWin.Anchor = gPoliceCar.Geometry as MapPoint; Point screenPoint = PublicParams.pubMainMap.MapToScreen(gPoliceCar.Geometry as MapPoint); MapMethods.SendPoliceCarPositon(gPoliceCar, Convert.ToInt32(screenPoint.X), Convert.ToInt32(screenPoint.Y)); } } else//不存在该车辆,先添加该车辆到地图上 { MapPoint mpGPS = new MapPoint((double)json["X"], (double)json["Y"], new SpatialReference(4326)); Symbol sGPS = App.Current.Resources["PoliceCarOnline"] as Symbol; Graphic gNewCar = new Graphic() { Symbol = sGPS, Geometry = mpGPS }; gNewCar.Attributes.Add("TITLE", json["TITLE"].ToString()); gNewCar.Attributes.Add("HH", json["HH"].ToString());//呼号 gNewCar.Attributes.Add("Class", "PoliceCar"); gNewCar.Attributes.Add("X", (double)json["X"]); gNewCar.Attributes.Add("Y", (double)json["Y"]); MapLayers.AddGraphicToGLayerByLayerID(gNewCar, PublicParams.gLayerPoliceCarGPS); MapLayers.RefreshGLayerByID(PublicParams.gLayerPoliceCarGPS); } } catch (Exception) { } }
/// <summary> /// LPY 2015-9-6 添加 /// 处理指令 /// </summary> /// <param name="rejson">待解析处理的JSON字符串</param> public void HandleCommands(JObject rejson) { switch (rejson["CMD"].ToString()) { case "00000": //底图切换 MapMethods.ChangeMapByJson(rejson); break; case "00001": //地图移动、缩放 //MapMethods.MoveAndZoomMapByJson(rejson); PublicParams.pubX = Convert.ToDouble(rejson["CENTX"].ToString()); PublicParams.pubY = Convert.ToDouble(rejson["CENTY"].ToString()); PublicParams.pubLevel = Convert.ToInt32(rejson["LEVEL"].ToString()); //LogHelper.WriteLog(PublicParams.type,"从客户端收到:"+ rejson.ToString()); break; case "00105": //接收到客户端发来的Graphic,显示在大屏上 MapMethods.DrawBufferByJSON(rejson); //MapLayers.AddGraphicToGLayerByLayerID(JsonHelper.FromJson<Graphic>(rejson["GRAPHIC"].ToString()), PublicParams.gLayerDrawing); break; case "00106": //清空Buffer图层上的Graphics MapMethods.ClearBufferLayer(); break; case "10003": //根据客户端发来的Pad窗口名称和开关指令,执行大屏上的相应Pad显示或隐藏 PadHelper.SwitchPadByName(rejson["ITEM"].ToString(), rejson["SWITCH"].ToString()); break; case "00107": //打开InfoWindow //PublicParams.pubInfoWin.IsOpen = true; MapMethods.ShowInfoWindowByJSON(rejson); break; case "00108": PublicParams.pubInfoWin.IsOpen = false; break; case "00109": //清空测距离和面积图层 MapMethods.ClearLengthOrAreaLayer(); break; case "00110": //在大屏上标出测量的距离或者面积结果 MapMethods.ShowLengthOrAreaByJSON(rejson); break; case "00111": //在大屏上画出新案件点周边的视频点 MapMethods.ShowSearchCamerasByJson(rejson); break; case "00037": //弹出视频背景板 PublicParams.padVideos.Height = PublicParams.videoPadHeight; PublicParams.padVideos.Width = PublicParams.videoPadWidth; //PublicParams.padVideos.BeginStoryboard(App.Current.FindResource("StoryboardForPadVideosOpen") as Storyboard); break; case "00038": //收回视频背景板 PublicParams.padVideos.Height = 0; PublicParams.padVideos.Width = 0; //PadVideos.ClearPadTitles(); //PublicParams.padVideos.BeginStoryboard(App.Current.FindResource("StoryboardForPadVideosClose") as Storyboard); break; case "00029": //聚合图 MapLayers.SwitchLayerByID(rejson["LAYERID"].ToString(), rejson["SWITCH"].ToString()); break; case "00030": //热力图显隐 MapLayers.SwitchLayerByID(rejson["LAYERID"].ToString(), rejson["SWITCH"].ToString()); break; case "00031": //显示隐藏相应图层-FeatureLayer MapLayers.SwitchLayerByID(rejson["LAYERID"].ToString(), rejson["SWITCH"].ToString()); break; case "00032": //显示隐藏相应图层-GraphicsLayer MapLayers.SwitchLayerByID(rejson["LAYERID"].ToString(), rejson["SWITCH"].ToString()); break; case "00033": //清空GraphicsLayer图层 MapLayers.ClearGLayerByID(rejson["LAYERID"].ToString()); PublicParams.listCase.Clear(); break; case "00039": //根据指令显示或清空视频背景板相应背景的文字 PadVideos.ShowHideTextByTitle(rejson["TITLE"].ToString(), Convert.ToInt32(rejson["ID"].ToString()), rejson["SWITCH"].ToString()); break; case "00065": //控制端点击菜单指令 //PublicParams.padMenu.BeginStoryboard(App.Current.FindResource("StoryboardForPadMenuShow") as Storyboard); //PublicParams.padMenu.DrawMenu2ByJson(rejson); break; case "00061": //隐藏菜单指令 //PublicParams.padMenu.DrawMenu2ByJson(rejson); break; case "00041": //调整单个开窗位置 ParamsHelper.ExecParamsFromJson(rejson); break; case "00042": //保存全部窗口位置 ParamsHelper.ExecSaveParamsFromJson(rejson); break; case "00043": //调整单个开窗位置和窗体名称 //ParamsHelper.ExecParamsAndNameFromJson(rejson); break; default: break; } }
public static void SwitchPadByName(string padName, string value) { try { switch (padName) { case "警情监控": //警情监控-案件点模拟 switch (value) { case "0": PublicParams.padCaseInfo.BeginStoryboard(App.Current.FindResource("StoryboardForCloseCasePad") as Storyboard); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerCrimePoint, false); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerCase, false); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerSearchCamerasNearCrime, false); break; case "1": PublicParams.padCaseInfo.BeginStoryboard(App.Current.FindResource("StoryboardForOpenCasePad") as Storyboard); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerCrimePoint, true); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerCase, true); MapLayers.ShowHideGraphicsLayerByID(PublicParams.gLayerSearchCamerasNearCrime, true); break; } break; case "当日案件": //当日案件 switch (value) { case "0": //GlobalLayers.TodayAJ.Visible = false; //GlobalLayers.ActiveLayer.Visible = false; break; case "1": //GlobalLayers.TodayAJ.Visible = true; //GlobalLayers.ActiveLayer.Visible = true; break; } break; case "警车": switch (value) { case "0": //GlobalLayers._policepointglr.Visible = false; //GlobalLayers._offlineglr.Visible = false; break; case "1": //GlobalLayers._policepointglr.Visible = true; //GlobalLayers._offlineglr.Visible = true; break; } break; case "警车活动": switch (value) { case "0": //GlobalLayers._carinfowindow.Width = 1; //GlobalLayers._carinfowindow.Height = 1; break; case "1": //GlobalLayers._carinfowindow.Width = 1500; //GlobalLayers._carinfowindow.Height = 1000; break; } break; default: break; } } catch (Exception) { } }
private FeatureLayer flRoad; //道路 public Traffic() { try { flTrafficLight = MapLayers.GetFeatureLayerByID(PublicParams.fLayerTrafficLight); flRoad = MapLayers.GetFeatureLayerByID(PublicParams.fLayerRoad); if (flTrafficLight == null || flRoad == null) { return; } } catch (Exception) { LogHelper.WriteLog("Traffic初始化错误!"); return; } flTrafficLight.OutFields = new OutFields { "*" }; flRoad.OutFields = new OutFields { "*" }; ClassBreaksRenderer cbrTrafficLight = new ClassBreaksRenderer();//红绿灯 cbrTrafficLight.Field = "DLD_STATUS"; ClassBreakInfo cbiRed = new ClassBreakInfo() { MinimumValue = 0, MaximumValue = 0, Symbol = PublicParams.symbolRedLight }; ClassBreakInfo cbiYellow = new ClassBreakInfo() { MinimumValue = 1, MaximumValue = 1, Symbol = PublicParams.symbolYellowLight }; ClassBreakInfo cbiGreen = new ClassBreakInfo() { MinimumValue = 2, MaximumValue = 2, Symbol = PublicParams.symbolGreenLight }; cbrTrafficLight.Classes.Add(cbiRed); cbrTrafficLight.Classes.Add(cbiYellow); cbrTrafficLight.Classes.Add(cbiGreen); flTrafficLight.Renderer = cbrTrafficLight; ClassBreaksRenderer cbrRoad = new ClassBreaksRenderer();//道路 cbrRoad.Field = "DL_COUNT"; ClassBreakInfo cbiFree = new ClassBreakInfo() { MinimumValue = 0, MaximumValue = 100, Symbol = PublicParams.roadFreeSymbol }; ClassBreakInfo cbiNormal = new ClassBreakInfo() { MinimumValue = 101, MaximumValue = 200, Symbol = PublicParams.roadNormalSymbol }; ClassBreakInfo cbiBusy = new ClassBreakInfo() { MinimumValue = 201, MaximumValue = 1000, Symbol = PublicParams.roadBusySymbol }; cbrRoad.Classes.Add(cbiFree); cbrRoad.Classes.Add(cbiNormal); cbrRoad.Classes.Add(cbiBusy); flRoad.Renderer = cbrRoad; Task taskInitTrafficLight = new Task(InitTrafficLight); taskInitTrafficLight.Start(); Task taskInitRoad = new Task(InitRoad); taskInitRoad.Start(); }