一、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);
}

PIE.NET-SDK组件式二次开发文档的更多相关文章

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

    一 PIE.Net开发环境部署 1.     开发环境部署 确保Win7系统已安装SP1 安装Visual Studio2013(支持VS2010/2012/2013/2015) 安装PIESDK.e ...

  2. 【以前弄的老东西】DLLspy超犀利后门 (源代码+程序+使用手册+二次开发文档)

    这个玩意儿是很久之前的整的.一直没有做完,但是基本功能和框架都做好了,现在发出来,希望有能力的家伙一起完成.DLLspy,绝对免杀,隐藏,HTTP请求劫持,居家旅行,杀人放火必备良药.有时间我会继续开 ...

  3. ECSHOP二次开发文档【文件结构说明和数据库表分析】

    最近公司又把之前的ecshop进行二次开发,之前看过一些ecshop的东西,但是都过了很久差不多都忘完了,现在得把之前的重新捡回来,特此搜到这些文档,接下来的开发工作中会方便不少. Ecshop文件结 ...

  4. Typecho 二次开发文档链接

    快速入门模板入门 模板制作快速入门推荐目录结构 Typecho模板的推荐页面构成模板文件说明 Typecho主题制作文件结构 页面制作制作functions文件: Typecho的functions. ...

  5. ECSHOP 2.5.1 二次开发文档【文件结构说明和数据库表分析】

    ecshop文件架构说明 /* ECShop 2.5.1 的结构图及各文件相应功能介绍 ECShop2.5.1_Beta upload 的目录 ┣ activity.php 活动列表 ┣ affich ...

  6. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  7. Android App签名打包 与 SDK开发文档

    Android App签名打包签名的意义1.为了保证每个程序开发者的合法权益2.放置部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改3.保证我们每次发布的版本 ...

  8. [翻译]开发文档:android Bitmap的高效使用

    内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...

  9. Web图片编辑控件开发文档-Xproer.ImageEditor

    版权所有 2009-2014 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com 产品首页:http://www.ncmem.com/webplug/image-e ...

随机推荐

  1. jqgrid控件列分组

    <%-- builed by manage.aspx.cmt [ver:2014.48.11] at 2014/10/11 16:48:33 --%> <%@ Page Langua ...

  2. 字符串的查找删除---C++中string.find()函数与string::npos

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...

  3. HTTP Modules versus ASP.NET MVC Action Filters

    from:http://odetocode.com/blogs/scott/archive/2011/01/17/http-modules-versus-asp-net-mvc-action-filt ...

  4. 命令之 ulimit

    help ulimit help ulimit ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit] Modify shell resource limits. ...

  5. 20169219 TCP_IP网络协议攻击实验报告

    (1) ARP缓存欺骗 RP 缓存是 ARP 协议的重要组成部分.ARP 协议运行的目标就是建立 MAC 地址和 IP 地址的映射,然后把这一映射关系保存在 ARP 缓存中,使得不必重复运行 ARP ...

  6. delphi 指针 认识

    delphi 指针分为类型指针和无类型指针: 类型指针分为PChar.PInteger.PString等. 无类型指针Pointer. PPChar/PP...为指针的指针 @和Addr一样,为获取变 ...

  7. ajax 判断账户密码 调取数据模糊查询 时钟

    一.判断账户密码 <Login.html> <head> <meta http-equiv="Content-Type" content=" ...

  8. .net在线HTML编辑器

    //在线网页编辑器, <script> var editor2 = new baidu.editor.ui.Editor({//实例化编辑器 initialContent: '', min ...

  9. WinForm中DataGridView的使用(六) - 特殊处理的小地方

    列标题不能居中的解决方法 一般列标题的居中我们都使用this.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignmen ...

  10. c# 根据文件夹或文件名返回(文件夹或文件)的完整路径

    c#  根据文件夹或文件名返回(文件夹或文件)的完整路径 一.方案一:(使用windows API) 二.方案二:(扫描全盘)