PIE.NET-SDK组件式二次开发文档

 

一、PIE.Net开发环境及目录说明

1.   开发环境

  •  确保Win7系统已安装SP1
  •  安装Visual Studio2013(支持VS2010/2012/2013/2015)
  •  安装PIESDK.exe二次开发包

2. 【SDK】安装后目录说明

 

1)        Bin>>开发包

2)        Config>>配置文件

3)        Data>>坐标系投影及数据映射表

4)        Document>>帮助文件

5)        Language>>语言国际化

6)        Res>>按钮图标及鼠标Cursor样式

7)        Sample>>实例文件

8)        Style>>符号库文件

9)        Template>>制图模板

二、PIE.NET_SDK二次开发实例

     Tool(工具插件):适用于与地图或制图组件有交互的插件,只需继承自BaseTool(继承自BaseCommand),根据功能需要可重写OnMouseDown、OnMouseMove等方法,如:拉框放大、探针、画多边形等。

    Command(命令插件):与地图无交互,只需继承自BaseCommand,重写OnClick方法,如:全图、居中放大、前一视图等。

1. WinForm插件调用

  (1)新建Visual C#的Windows 窗体应用程序,选择新建→项目,选择Visual C #的Windows窗体应用程序,设置.Net Framework4以及工程名称“MapManager”和位置。

 

  (2)设置Debug和Release环境,新建选择x86平台。

 

  (3)配置PIE.NET_SDK:在MapManager.csproj的同级目录下新建“APPDebug”文件夹,修改生成输出路径位置为../ APPDebug/Bin。

 

  (4)代码编写

A:工具箱里MapControl、TOCControl控件拖拽绑定

添加窗体,初始化绑定MapControl、TOCControl控件代码:

tocControl1.SetBuddyControl(mapControl1);

窗体运行显示如下:

 

B:选择工程引用,根据自己开发的插件功能需求进行选择, 浏览本机已经安装位置的【Bin】目录下添加类库,单击确定即可。
C:调用

以地图拉框放大(Tool)和全图(Command)为例

        /// <summary>
        /// 拉框放大
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton_MapZoomIn_Click(object sender, EventArgs e)
        {
            ITool tool = new MapZoomInTool();
            ICommand command = tool as ICommand;
            command.OnCreate(mapControl1);
            mapControl1.CurrentTool = tool;
        }
        /// <summary>
        /// 全图
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton_FullExtent_Click(object sender, EventArgs e)
        {
            ICommand cmd = new FullExtentCommand();
            cmd.OnCreate(mapControl1);
            cmd.OnClick();
        }

2. 插件代码实现

    新建插件.cs类

以地图拉框放大(Tool)为例

以全图显示(Command)为例

 

构造函数中的定义可个性化定制,控制实际的显示名称、提示和图片(m_Image),鼠标样式放置在构造函数里设置,如鼠标事件里需要改变鼠标样式,再在鼠标事件里控制即可。

设置Cursor符号cur样式

 

  (1)构造函数

  public ZoomIn()
        {
            this.Caption = "拉框放大";              (Caption属性)
            this.Name = "MapZoomIn";               (名称)
            this.ToolTip = "拉框放大地图";           (提示)
            this.Checked = false;                  (插件是否选择)
            this.Enabled = false;                  (插件是否可用)    (鼠标样式在构造函数)
            this.Cursor = new Cursor(new System.IO.MemoryStream(Properties.Resources.ZoomIn));   
        }

  (2)创建插件对象

    public override void OnCreate(object hook) 
        {
            base.OnCreate(hook);
            m_ActiveView = m_HookHelper.ActiveView;      (当前激活视图获取)
        }

  (3)单击方法

   public override void OnClick()
        {
            if (!this.Enabled) return;
        }

  (4)鼠标事件

    以拉框放大为例:鼠标按下时获取拉框,并给地图设置范围变化、刷新。

         /// <summary>
        /// 鼠标按下
        /// </summary>
        /// <param name="sender">触发对象</param>  
        /// <param name="e">鼠标事件参数</param>
    public override void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button != System.Windows.Forms.MouseButtons.Left) return;   //判断左键
            m_ActiveView.Extent = (m_HookHelper.GetContent() as IMapControl).TrackRectangle();
            m_ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
        } 

 

原文地址:https://www.cnblogs.com/PIESat/p/10248907.html