Пример #1
0
 /// <summary>
 /// 查询事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void select_Click(object sender, RoutedEventArgs e)
 {
     if (this.sql.Text != "")
     {
         CSetEnumLayerStatus setLayerStatus;
         setLayerStatus                = new CSetEnumLayerStatus();
         setLayerStatus.GdbIndex       = 0;
         setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
         setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
         this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);
         //设置web查询参数
         CLayerSelectParam mapsel = new CLayerSelectParam();
         CWebSelectParam   websel = new CWebSelectParam();
         websel.CompareRectOnly = this.vectorLayer.CompareRectOnly;
         websel.Geometry        = null;
         websel.MustInside      = this.vectorLayer.MustInside;   //查询要素是否在图形里面
         websel.NearDistance    = this.vectorLayer.NearDistanse; //查询半径
         websel.SelectionType   = SelectionType.Condition;       //查询类型:属性
         websel.WhereClause     = this.sql.Text;                 //查询sql语句
         mapsel.WebSelectParam  = websel;                        //web查询参数对象
         mapsel.PageCount       = 0;                             //查询起始页数
         this.layer_dataView._lastSelectParam = mapsel;
         //调用矢量图层的查询方法查询
         this.vectorLayer.LayerSelectAndGetAtt(mapsel, this.layer_dataView.SelectCallback);
         if (this.HightLight.IsChecked == true)
         {//高亮显示:传入地图容器对象、查询参数、绘图层对象、矢量图层对象
             drawHighLight.AddhighLightFeatures(this.iMSMap1, mapsel, this.graphicsLayer1, this.vectorLayer);
         }
     }
     else
     {
         MessageBox.Show("查询参数为空!");
         return;
     }
 }
 /// <summary>
 /// 地图加载就绪事件
 /// </summary>
 /// <param name="e"></param>
 void iMSMap1_MapReady(IMSMapEvent e)
 {
     if (!DesignerProperties.IsInDesignTool)
     {
         //地图容器右键菜单添加一项:取消鼠标状态
         this.iMSMap1.SetInfoText("                                             选择几何查询类型,然后查询;右键菜单“取消鼠标状态”", Colors.Black);
         MenuItem item = new MenuItem();
         item.Header = "取消鼠标状态";
         this.iMSMap1.ContextMenu.Items.Add(item);
         item.Click += new RoutedEventHandler(item_Click);
         //初始化查询结果显示控件
         layer_dataView = new LayerDataViewer()
         {
             activeLayer   = this.vectorLayer,
             GraphicsLayer = this.graphicsLayer
         };
         //设置图层状态
         CSetEnumLayerStatus setLayerStatus;
         //设置状态更新参数
         setLayerStatus          = new CSetEnumLayerStatus();
         setLayerStatus.GdbIndex = 0;//图层所在gdb数据库索引号
         //设置索引号为0的图层状态:可查询
         setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
         setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
         //调用矢量图层的设置图层状态方法,设置图层状态
         this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);
     }
 }
        /// <summary>
        /// 几何查询类型设置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.selType != null)
            {
                CSetEnumLayerStatus setLayerStatus;
                setLayerStatus                = new CSetEnumLayerStatus();
                setLayerStatus.GdbIndex       = 0;
                setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
                setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
                this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);

                switch (this.selType.SelectedIndex)
                {
                case 0:
                {        //点查询
                    this.graphicsLayer.DrawingType          = DrawingType.Point;
                    this.graphicsLayer.DrawingOverCallback += new DrawingEventHandler(DotSelect);

                    break;
                }

                case 1:
                {        //矩形查询
                    this.graphicsLayer.DrawingType          = DrawingType.Rectangle;
                    this.graphicsLayer.DrawingOverCallback += RectSelect;
                    break;
                }

                case 2:
                {        //线查询
                    this.graphicsLayer.DrawingType          = DrawingType.Polyline;
                    this.graphicsLayer.DrawingOverCallback += LineSelect;
                    break;
                }

                case 3:
                {        //圆查询
                    this.graphicsLayer.DrawingType          = DrawingType.Circle;
                    this.graphicsLayer.DrawingOverCallback += CircleSelect;

                    break;
                }

                case 4:
                {        //圆查询
                    this.graphicsLayer.DrawingType          = DrawingType.Polygon;
                    this.graphicsLayer.DrawingOverCallback += PolySelect;
                    break;
                }
                }
            }
        }
        void vectorLayer_LayerOpenSuccEvent(IVector layer)
        {
            //设置图层状态
            CSetEnumLayerStatus setLayerStatus;

            //设置状态更新参数
            setLayerStatus          = new CSetEnumLayerStatus();
            setLayerStatus.GdbIndex = 0;//图层所在gdb数据库索引号
            //设置索引号为0的图层状态:可查询
            setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
            setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
            //调用矢量图层的设置图层状态方法,设置图层状态
            this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);
        }
Пример #5
0
 /// <summary>
 /// 地图加载就绪事件
 /// </summary>
 /// <param name="e"></param>
 void iMSMap1_MapReady(IMSMapEvent e)
 {
     if (!DesignerProperties.IsInDesignTool)
     {
         //初始化查询结果显示控件
         layer_dataView = new LayerDataViewer()
         {
             activeLayer   = this.vectorLayer,
             GraphicsLayer = this.graphicsLayer
         };
         //设置图层状态
         CSetEnumLayerStatus setLayerStatus;
         //设置状态更新参数
         setLayerStatus          = new CSetEnumLayerStatus();
         setLayerStatus.GdbIndex = 0;//图层所在gdb数据库索引号
         //设置索引号为0的图层状态:可查询
         setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
         setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
         //调用矢量图层的设置图层状态方法,设置图层状态
         this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);
     }
 }
Пример #6
0
        void vectorLayer_LayerOpenSuccEvent(IVector layer)
        {
            //地图容器右键菜单添加一项:取消鼠标状态
            this.iMSMap1.SetInfoText("                                             选择几何查询类型,然后查询;右键菜单“取消鼠标状态”", Colors.Black);
            MenuItem item = new MenuItem();

            item.Header = "取消鼠标状态";
            this.iMSMap1.ContextMenu.Items.Add(item);
            item.Click += new RoutedEventHandler(item_Click);
            this.iMSMap1.Refresh();
            //设置图层状态
            CSetEnumLayerStatus setLayerStatus;

            //设置状态更新参数
            setLayerStatus          = new CSetEnumLayerStatus();
            setLayerStatus.GdbIndex = 0;//图层所在gdb数据库索引号
            //设置索引号为0的图层状态:可查询
            setLayerStatus.LayerStatus    = new EnumLayerStatus[1];
            setLayerStatus.LayerStatus[0] = EnumLayerStatus.Editable;
            //调用矢量图层的设置图层状态方法,设置图层状态
            this.vectorLayer.SetEnumLayerStatus(setLayerStatus, onSetSingleLayerStatus);
        }
        private void OnTick(object sender = null, EventArgs e = null)
        {
            if (sender != null)
            {
                (sender as DispatcherTimer).Stop();
            }
            //m_flg = false;
            if (m_layerObj is VectorLayerBase && dictionary.ContainsKey((m_layerObj as VectorLayerBase).ClientUID) &&
                dictionary[(m_layerObj as VectorLayerBase).ClientUID].IsEnabled)
            {
                dictionary[(m_layerObj as VectorLayerBase).ClientUID].Stop();
            }
            if (m_layerObj != null) //&& m_layerTreeNodeType == LayerTreeNodeType.ChildLayer)
            {
                //progressBar. Show( );
                if (m_layerType == LayerType.VectorMapDoc)
                {
                    VectorMapDoc vectorMapDoc = m_layerObj as VectorMapDoc;
                    if (mapDocStatusArrOld == null || mapDocStatusArrOld.Length < vectorMapDoc.LoadMapResult.MapLayerInfo.Length)
                    {
                        mapDocStatusArrOld = new EnumLayerStatus[vectorMapDoc.LoadMapResult.MapLayerInfo.Length];
                        for (int i = 0; i < vectorMapDoc.LoadMapResult.MapLayerInfo.Length; i++)
                        {
                            mapDocStatusArrOld[i] = EnumLayerStatus.Visiable;
                        }
                    }
                    //保存发送之前的状态
                    for (int i = 0; i < vectorMapDoc.LoadMapResult.MapLayerInfo.Length; i++)
                    {
                        if ((mapDocStatusArrOld[i] == EnumLayerStatus.Invisiable && vectorMapDoc.LoadMapResult.MapLayerInfo[i].LayerStatus == EnumLayerStatus.Visiable) ||
                            (mapDocStatusArrOld[i] != EnumLayerStatus.Invisiable && vectorMapDoc.LoadMapResult.MapLayerInfo[i].LayerStatus == EnumLayerStatus.Invisiable))
                        {
                            m_isRefresh = true;
                        }
                        mapDocStatusArrOld[i] = vectorMapDoc.LoadMapResult.MapLayerInfo[i].LayerStatus;
                    }

                    vectorMapDoc.UpdateAllLayerInfo(new UploadStringCompletedEventHandler(OnTick_Callback));
                }
                else if (m_layerType == LayerType.VectorLayer)
                {
                    VectorLayer vectorLayer = m_layerObj as VectorLayer;
                    if (layerStatusArrOld == null || layerStatusArrOld.Length < vectorLayer.LayerStatus.Length * vectorLayer.LayerStatus[0].Count)
                    {
                        layerStatusArrOld = new EnumLayerStatus[vectorLayer.LayerStatus.Length, vectorLayer.LayerStatus[0].Count];
                        for (int i = 0; i < vectorLayer.LayerStatus.Length; i++)
                        {
                            for (int j = 0; j < vectorLayer.LayerStatus[0].Count; j++)
                            {
                                layerStatusArrOld[i, j] = EnumLayerStatus.Visiable;
                            }
                        }
                    }
                    //保存发送之前的状态
                    for (int i = 0; i < vectorLayer.LayerStatus.Length; i++)
                    {
                        for (int j = 0; j < vectorLayer.LayerStatus[0].Count; j++)
                        {
                            if ((layerStatusArrOld[i, j] == EnumLayerStatus.Invisiable && vectorLayer.LayerStatus[i][j] == EnumLayerStatus.Visiable) ||
                                layerStatusArrOld[i, j] != EnumLayerStatus.Invisiable && vectorLayer.LayerStatus[i][j] == EnumLayerStatus.Invisiable)
                            {
                                m_isRefresh = true;
                            }
                            layerStatusArrOld[i, j] = vectorLayer.LayerStatus[i][j];
                        }
                    }

                    CSetEnumLayerStatus setLayerStatus;
                    for (int i = 0; i < vectorLayer.LayerStatus.Length; i++)
                    {
                        setLayerStatus             = new CSetEnumLayerStatus();
                        setLayerStatus.GdbIndex    = i;
                        setLayerStatus.LayerStatus = new EnumLayerStatus[vectorLayer.LayerStatus[i].Count];
                        vectorLayer.LayerStatus[i].CopyTo(setLayerStatus.LayerStatus);
                        if (i == vectorLayer.LayerStatus.Length - 1)
                        {
                            vectorLayer.SetEnumLayerStatus(setLayerStatus, new UploadStringCompletedEventHandler(OnTick_Callback));
                        }
                        else
                        {
                            vectorLayer.SetEnumLayerStatus(setLayerStatus, null);
                        }
                    }
                }
            }
        }