supermap objects 地图上添加 点线面图层 和删除图层 的类

来源:互联网 发布:量子技术 知乎 编辑:程序博客网 时间:2024/06/04 18:20
窗口form1的代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace addLayer1{    public partial class Form1 : Form    {        private SampleRun m_sampleRun;        private Boolean m_styleFlag = false;         public Form1()        {            InitializeComponent();            LoadComboBoxContents();            m_sampleRun = new SampleRun(workspace1, mapControl1);        }         /// <summary>        /// 下载下拉框项目        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void LoadComboBoxContents()        {            toolStripComboBox1.Items.Add("自定义风格");            toolStripComboBox1.Items.Add("默认风格");            toolStripComboBox1.SelectedItem = toolStripComboBox1.Items[1];        }         private void Form1_FormClosing(object sender, FormClosingEventArgs e)        {            mapControl1.Dispose();            workspace1.Dispose();        }         private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)        {            if (toolStripComboBox1.SelectedItem == toolStripComboBox1.Items[0])            {                m_styleFlag = true;            }            else            {                m_styleFlag = false;            }        }         private void toolStripButton1_Click(object sender, EventArgs e)        {            m_sampleRun.AddPointDataset(m_styleFlag);        }         private void toolStripButton6_Click(object sender, EventArgs e)        {            m_sampleRun.RemoveLayer();        }         private void toolStripButton2_Click(object sender, EventArgs e)        {            m_sampleRun.AddLineDataset(m_styleFlag);        }         private void toolStripButton3_Click(object sender, EventArgs e)        {            m_sampleRun.AddRegionDataset(m_styleFlag);        }    }}
SampleRun的类:
 
using System;using System.Collections.Generic;using System.Drawing;using System.Text;using SuperMap.Data;using SuperMap.Mapping;using SuperMap.UI; namespace addLayer1{    internal class SampleRun    {        private Workspace m_workspace;        private MapControl m_mapControl;        private Datasource m_datasource;        Layer layer = null;         public SampleRun(Workspace workspace, MapControl mapControl)        {            this.m_mapControl = mapControl;            this.m_workspace = workspace;            m_mapControl.Map.Workspace = m_workspace;            Initialize();        }         private void Initialize()        {            WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(@"D:\souce\supermap\SampleData\World\World.smwu");            m_workspace.Open(conInfo);            m_mapControl.Map.Open(m_workspace.Maps[0]);            m_datasource = m_workspace.Datasources[0];            m_mapControl.Action = Action.Pan;            m_mapControl.Map.ViewEntire();        }         //添加点数据集        public void AddPointDataset(Boolean styleFlag)        {            DatasetVector dataset = m_datasource.Datasets["Capital"as DatasetVector;            RemoveLayer();            //自定义的            if (styleFlag)            {                LayerSettingVector setting = new LayerSettingVector();                setting.Style.MarkerSize = new Size2D(4, 4);                setting.Style.MarkerSymbolID = 10;                layer = m_mapControl.Map.Layers.Add(dataset, setting, true);            }            else   //默认的            {                layer = m_mapControl.Map.Layers.Add(dataset, true);            }            m_mapControl.Map.ViewEntire();            m_mapControl.Map.Refresh();        }         //添加线数据集        public void AddLineDataset(Boolean styleFlag)        {            DatasetVector dataset = m_datasource.Datasets["Grids"as DatasetVector;            RemoveLayer();            if (styleFlag)            {                LayerSettingVector setting = new LayerSettingVector();                setting.Style.LineColor = Color.Orange;                setting.Style.MarkerSymbolID = 12;                setting.Style.LineWidth = 0.2;                layer = m_mapControl.Map.Layers.Add(dataset, setting, true);            }            else            {                layer = m_mapControl.Map.Layers.Add(dataset, true);            }            m_mapControl.Map.ViewEntire();            m_mapControl.Map.Refresh();        }         //添加面数据集        public void AddRegionDataset(Boolean styleFlag)        {            DatasetVector dataset = m_datasource.Datasets["World"as DatasetVector;            RemoveLayer();            if (styleFlag)            {                LayerSettingVector setting = new LayerSettingVector();                setting.Style.LineColor = Color.White;                setting.Style.LineWidth = 0.5;                setting.Style.MarkerSymbolID = 11;                setting.Style.FillForeColor = Color.Yellow;                setting.Style.FillOpaqueRate = 50;                layer = m_mapControl.Map.Layers.Add(dataset, setting, true);            }            else            {                layer = m_mapControl.Map.Layers.Add(dataset, true);            }            m_mapControl.Map.ViewEntire();            m_mapControl.Map.Refresh();        }         //删除图层        public void RemoveLayer()        {            if (layer != null)            {                m_mapControl.Map.Layers.Remove(layer.Name);                layer = null;                m_mapControl.Map.Refresh();            }        }    }}