arcgis for silverlight 为graphiclayer 上的点添加属性信息和获取属性信息

#region 获取所有权限视频点加载到图层
        private void MonitorpointInfo()
        {
            #region 测试数据
            //foreach (MapService.MonitorModel objMonitor in lisMonitor)
            //{
            //    if ((objMonitor.X != null || objMonitor.X != "") && (objMonitor.Y != null || objMonitor.Y != ""))
            //    {
                   
            //    }
            //}

            //MonitorModel objM1=new MonitorModel()
            //{
            //    X = 98318.3584436682,
            //    Y = 3498207.6618042
            //};

            //MonitorModel objM2 = new MonitorModel()
            //{
            //    X = 98328.3584436682,
            //    Y = 3498207.6618042
            //};

            //MonitorModel objM3 = new MonitorModel()
            //{
            //    X = 98338.3584436682,
            //    Y = 3498207.6618042
            //};

            //lisMonitor.Add(objM1);
            //lisMonitor.Add(objM2);
            //lisMonitor.Add(objM3);
            #endregion

            // 单个视频点
            ESRI.ArcGIS.Client.Graphic graphic = null;

            // 为了使视频点能够随着地图比例的变化改变使用面
            ESRI.ArcGIS.Client.Geometry.MapPoint mapPointVideo = null;

            for (int i = 0; i < lisMonitor.Count; i++)
            {
                MapService.MonitorModel objMM = lisMonitor[i];
               
                if ((objMM.X != null && objMM.X != "") && (objMM.Y != null && objMM.Y != ""))
                {

                    mapPointVideo = new MapPoint(double.Parse(objMM.X), double.Parse(objMM.Y));

                    graphic = new ESRI.ArcGIS.Client.Graphic()
                    {
                        Geometry = mapPointVideo,
                        Symbol = this.LayoutRoot.Resources["DefaultPictureSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol
                    };

                    graphic.Attributes.Add("MonitorId", objMM.MonitorId);
                    graphic.Attributes.Add("Address", objMM.Address);
                    graphic.Attributes.Add("GroupId", objMM.GroupId);
                    graphic.Attributes.Add("Memo", objMM.Memo);
                    graphic.Attributes.Add("MonitorCode", objMM.MonitorCode);
                    graphic.Attributes.Add("MonitorGuid", objMM.MonitorGuid);
                    graphic.Attributes.Add("MonitorIp", objMM.MonitorIp);
                    graphic.Attributes.Add("MonitorUrl", objMM.MonitorUrl);
                    graphic.Attributes.Add("MonitorName", objMM.MonitorName);
                    graphic.Attributes.Add("X", objMM.X);
                    graphic.Attributes.Add("Y", objMM.Y);
                    graphic.Attributes.Add("Towns", objMM.Towns);
                    graphic.Attributes.Add("MonitorPort", objMM.MonitorPort);
                    graphic.Attributes.Add("UserCode", objMM.UserCode);
                    graphic.Attributes.Add("PassWord", objMM.PassWord);
                   
                    //string strid = objgraphic.Attributes["ID"].ToString();
                    // 构建提示信息
                    FrameworkElement mapTipElement = GetMapTipInfo(objMM);

                    if (mapTipElement != null)
                    {
                        graphic.MapTip = mapTipElement;
                        graphic.MapTip.Opacity = 1;
                    }

                    featureLayerMonitor.Graphics.Add(graphic);

                }
                else
                {
                    lisMonitor.RemoveAt(i);
                    i--;
                }
            }

            // 设置其聚簇显示
            FlareClusterer myflareClusterer = new FlareClusterer();

            //设置背景色
            myflareClusterer.FlareBackground = new SolidColorBrush(Colors.Orange);
            //设置前景色
            myflareClusterer.FlareForeground = new SolidColorBrush() { Color = Color.FromArgb(99, 0, 0, 0) };
            // 设置以像素为单位的聚集半径
            myflareClusterer.Radius = 20;
            // 聚集的最大个数,超过则用大聚集设置Gradient
            myflareClusterer.MaximumFlareCount = 30;

            featureLayerMonitor.Clusterer = myflareClusterer;
            this.CurrentMap.Layers.Add(featureLayerMonitor);
        }
        #endregion

/获取点的属性信息

 case SilverlightMap.MainPage.ToolType.EditMonitor:
                        Envelope envelope2 = e.Geometry as Envelope;
                        MapPoint mapPoint11 = new MapPoint(envelope2.Extent.XMax, envelope2.Extent.YMax);
                        MapPoint mapPoint12 = new MapPoint(envelope2.Extent.XMin, envelope2.Extent.YMin);
                        GeneralTransform generalTran1 = objCurrentMap.TransformToVisual(App.Current.RootVisual);
                        Point point11 = generalTran1.Transform(objCurrentMap.MapToScreen(mapPoint11));
                        Point point12 = generalTran1.Transform(objCurrentMap.MapToScreen(mapPoint12));
                        Rect selrect = new Rect(point11, point12);
                        GraphicsLayer gralayer1 = objCurrentMap.Layers["FEATURELAYERMONITOR"] as GraphicsLayer;
                        IEnumerable<Graphic> graphicList1 = gralayer1.FindGraphicsInHostCoordinates(selrect);

                        if (graphicList1.Count() != 1 )
                        {
                            MessageBox.Show("请选中一个视频点,再进行编辑!", "修改视频点", MessageBoxButton.OK);
                            break;
                        }

                        foreach (Graphic objgraphic in graphicList1)
                        {
                            try
                            {
                                MapService.MonitorModel objEditMonitor = new MapService.MonitorModel();

                                //存储编辑视频点
                                Graphic objEditgraphic = objgraphic;

                                objEditMonitor.MonitorName = objEditgraphic.Attributes["MonitorName"].ToString();
                                objEditMonitor.MonitorId = int.Parse(objEditgraphic.Attributes["MonitorId"].ToString());
                                objEditMonitor.Address = objEditgraphic.Attributes["Address"].ToString();
                                objEditMonitor.GroupId = int.Parse(objEditgraphic.Attributes["GroupId"].ToString());
                                objEditMonitor.Memo = objEditgraphic.Attributes["Memo"].ToString();
                                objEditMonitor.MonitorCode = objEditgraphic.Attributes["MonitorCode"].ToString();
                                objEditMonitor.MonitorGuid = objEditgraphic.Attributes["MonitorGuid"].ToString();
                                objEditMonitor.MonitorIp = objEditgraphic.Attributes["MonitorIp"].ToString();
                                objEditMonitor.MonitorUrl = objEditgraphic.Attributes["MonitorUrl"].ToString();
                                objEditMonitor.X = objEditgraphic.Attributes["X"].ToString();
                                objEditMonitor.Y = objEditgraphic.Attributes["Y"].ToString();
                                objEditMonitor.Towns = objEditgraphic.Attributes["Towns"].ToString();
                                objEditMonitor.MonitorPort = objEditgraphic.Attributes["MonitorPort"].ToString() == string.Empty ? 80 : int.Parse(objEditgraphic.Attributes["MonitorPort"].ToString());
                                objEditMonitor.UserCode = objEditgraphic.Attributes["UserCode"].ToString();
                                objEditMonitor.PassWord = objEditgraphic.Attributes["PassWord"].ToString();

                                // 弹出新增的视频点的输入框
                                MonitorEditInfo WinMonitorEdit = new MonitorEditInfo(objEditMonitor);
                                WinMonitorEdit.FlwinIdentify.IsOpen = false;
                                // 设置显示的位置
                                WinMonitorEdit.FlwinIdentify.InitialLeft = 100;
                                WinMonitorEdit.FlwinIdentify.InitialTop = 70;
                                // 添加该弹出框
                                objCurrentPage.LayoutRoot.Children.Add(WinMonitorEdit);
                                WinMonitorEdit.FlwinIdentify.IsOpen = true;                           

                            }
                            catch (Exception ex)
                            {
                                MapService.Service1Client objWcfAgency = SilverlightMap.UtilityClass.WcfAgency.GetMapServer();
                                objWcfAgency.RecordExceptionToFileAsync(ex);
                            }
                        }

                        objCurrentPage.CurrentToolType = SilverlightMap.MainPage.ToolType.Pan;
                        break;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值