Ejemplo n.º 1
0
        /// <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)
                {
                }
            }));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// LPY 2016-3-24 添加
 /// 清空测距离和面积的图层
 /// </summary>
 public static void ClearLengthOrAreaLayer()
 {
     PublicParams.pubMainMap.Dispatcher.BeginInvoke(new Action(() =>
     {
         try
         {
             MapLayers.ClearGLayerByID(PublicParams.gLayerLengthOrArea);
         }
         catch (Exception)
         {
         }
     }));
 }
Ejemplo n.º 3
0
 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)
         {
         }
     }));
 }
Ejemplo n.º 4
0
        /// <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)
                {
                }
            }));
        }
Ejemplo n.º 5
0
        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)
            {
            }
        }
Ejemplo n.º 6
0
        /// <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;
            }
        }
Ejemplo n.º 7
0
        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)
            {
            }
        }
Ejemplo n.º 8
0
        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();
        }