一、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. 6.python探测Web服务质量方法之pycurl模块

    才开始学习的时候有点忽略了这个模块,觉得既然Python3提供了requests库,为什么多此一举学习这个模块.后来才发现pycurl在探测Web服务器的时候的强大. pycurl是一个用c语言写的l ...

  2. 几个SQL小知识(转)

    出处:http://www.cnblogs.com/wuguanglei/p/4205976.html 写在前面的话:之前做的一个项目,数据库及系统整体构架设计完成之后,和弟兄们经过一段时间的编码,系 ...

  3. 关于 ASP.NET 的 CompilationMode="Never" 性能问题

    今天在优化系统性的时候,想到了 ASP.NET 里的 CompilationMode="Never", 因为用户控件里没有任何代码, 只有控件,把用户控件的编译模式改为 Never ...

  4. Sobel算法

    最近看了一些Sobel算法,并试了一下,源码如下: private void Sobel(Bitmap img) { int width = img.Width; int height = img.H ...

  5. .net core in Docker 部署方案(随笔)

    前一段时间由于项目需要 .net core 在docker下的部署,途中也遇到很多坑,看了各同行的博客觉得多多少少还是有些问题,原本不想写此篇文章,由于好友最近公司也需要部署,硬是要求,于是花了些时间 ...

  6. 强制所有网页链接在同一页面打开或者在TabControl中弹出新窗口

    IEwebbrowser中老生常谈的话题. 一般的解决都是通过 // webBrowser.Navigating += WebBrowser_Navigating; 注册转跳前事件 private v ...

  7. 《C#多线程编程实战》2.6 ManualResetEventSlim

    这个比较好理解的. 正如书上所言,如同一直在打开的大门的屋子,谁要进去,谁就自己的关门,出来的时候在开开. 常用的方法 有三个: Set()  //设置为有信号,也就是让等待的线程不用继续等待,唤醒等 ...

  8. mybatis学习笔记(五):mybatis 逆向工程

    mybatis学习笔记(五):mybatis 逆向工程 在日常开发中,如果数据库中存在多张表,自己手动创建 多个pojo 类和编写 SQL 语法配置文件,未免太过繁琐,mybatis 也提供了一键式生 ...

  9. SHELL编程之条件测试

    条件测试 (一)概念:对特定的条件进行判断,以决定如何执行操作,当条件成立时,测试语句的返回值为0,否则为其他数值,意思就是如果 echo $? 的值是0,那么条件成立.条件测试的分类:文件测试.整数 ...

  10. linux系统安全及应用——PAM安全认证

    一.PAM认证模块介绍 PAM认证模块,叫做可插拔式的认证模块.一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换.PAM提供了对所有服务进行 ...