/// <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); }
/// <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); } }
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); } } } } }