一 PIE.Net开发环境部署

1.     开发环境部署
  • 确保Win7系统已安装SP1
  • 安装Visual Studio2013(支持VS2010/2012/2013/2015)
  • 安装PIESDK.exe二次开发包的A版本
2.【SDK】安装后目录说明

1)        Bin>>开发包

2)        Config>>配置文件

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

4)        Document>帮助文件

5)        Language>>语言国际化

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

7)        Sample>>实例文件

8)        Style>>符号库文件

9)        Template>>制图模板

检验PIEApplication.exe是否可用!

二 PIE.Net-SDK插件式开发步骤

1.     新建工程
1.1     新建项目

2-1:新建项目

2-2: 新建项目

注意项目框架选择.NET Framework 4,按上图红色框选择新建项目。

2.   项目属性配置,保持与SDK开发包一致
2.1    程序应用平台配置

2-3: 配置管理器

点击下拉箭头选择配置管理器按钮。

2-4: 配置管理器

2-5: 配置管理器

按如图2-4、图2-5所示,分别配置debug/release的活动解决方案平台为x86;

2.2      应用程序目标框架及生成路径配置

2-6: 项目属性

2-7: 配置目标框架

如图2-6、2-7所示,右键打开项目属性,在【应用程序】选项卡中确定目标框架.Net Framework4,输出类型为类库

2-8: 配置输出路径

3.     功能实现
3.1      添加项目引用

2-9: 添加引用

展开项目目录树,右键点击【引用】选择【添加引用】菜单项。

在弹出的引用管理器中 点击【程序集】的【扩展】项下拉选择。

2-10: 添加引用

浏览添加上图红色框选中的类库,单击确定即可。

注意:引用项可以根据自己开发的插件功能需求进行选择。

3.2      以加载矢量数据为例新建Command命令

2-11: 新建类

2-12: 新建加载矢量命令

2-13: 代码实现

通过重载OnCreate和OnClick,实现命令对象的创建,和事件里具体内容的实现。

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

Command(命令插件):与地图无交互,只需继承自BaseCommand,重写OnClick方法,如:全图、居中放大、前一视图等。弹出窗体的Command继承至DesktopCommand,如空间量测工具,而这里的加载矢量数据Command继承至BaseCommand。

2-14:初始化

在构造函数里初始化 界面按钮的样式:

m_Image为按钮背景图片;

注意:主程序首先通过配置文件查找图片,若配置文件中的图片不存在则使用工程中定义的图片。

Caption 为按钮名称;

Name 为命令对象的名称;

ToolTip 为按钮提示内容;

Checked 表示初始化时按钮是否为选中状态;

Enabled 设置初始化时按钮的可用性

2-15:创建插件对象

通过OnCreate方法传递hook对象,也就是MapControl对象,赋值给Command对象的m_Hook和m_HookHelper

2-16:实现加载矢量数据方法

通过以上步骤,矢量数据加载命令即创建完毕。 

3.3   在主程序中调用插件

3.3.1  设置启动宿主程序PIEApplication.exe

右键项目在调试选项中,选择启动外部程序,路径为安装路径目录下\Bin\PIEApplication.exe

2-17: 启动宿主程序PIEApplication.exe

3.3.2   配置文件设置

2-18:修改配置文件

在配置文件中新增Item项,设置控件类型(Type)为button,

library为插件类名,即PIE.ControlsTest.dll(带后缀的全称)

caption为控件在界面显示的名称

identity为唯一标识,格式为类库名称+命令对象名称,即PIE.ControlsTest.VectorCommand代码中通过identity找到对应命令控件

Image 为插件的背景图片名称,图片放置位置为安装路径目录下的【Res】文件夹下

2-19:插件控件背景图片设置

其中标签项page、group、item对应界面上的控件如下所示

2-20:界面与配置文件对应关系

3.3.3  效果展示

2-21:效果展示

 

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

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

    一.PIE.Net开发环境及目录说明 1.   开发环境 确保Win7系统已安装SP1 安装Visual Studio2013(支持VS2010/2012/2013/2015) 安装PIESDK.ex ...

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

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

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

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

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

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

  5. Typecho 二次开发文档链接

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

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

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

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

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

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

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

  9. 【原创】Odoo开发文档学习之:构建接口扩展(Building Interface Extensions)(边Google翻译边学习)

    构建接口扩展(Building Interface Extensions) 本指南是关于为Odoo的web客户创建模块. 要创建有Odoo的网站,请参见建立网站;要添加业务功能或扩展Odoo的现有业务 ...

随机推荐

  1. Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址

    string HostName = string.Empty; string ip = string.Empty; string ipv4 = String.Empty; if (!string.Is ...

  2. C#中的异步编程Async 和 Await

    谈到C#中的异步编程,离不开Async和Await关键字 谈到异步编程,首先我们就要明白到底什么是异步编程. 平时我们的编程一般都是同步编程,所谓同步编程的意思,和我们平时说的同时做几件事情完全不同. ...

  3. VC维的来龙去脉(转)

    本文转自VC维的来龙去脉 本文为直接复制原文内容,建议阅读原文,原文排版更清晰,且原网站有很多有意思的文章. 阅读总结: 文章几乎为台大林老师网课“机器学习可行性”部分串联总结,是一个很好的总结. H ...

  4. HTML总结之:HTML5的DOCTYPE 与 meta 属性介绍

    HTML5头部常用介绍: [DOCTYPE html] 声明文档类型为HTML5文件.   [meta标签] <meta> 元素可提供有关页面的元信息(meta-information), ...

  5. C#在线运行--cmd方法

       此次C#在线运行采用cmd.exe用csc对文件进行编译,然后再运行的思路实现在线运行的效果.不过会生成二个文件(.cs和.exe),可能需要定期清除临时文件夹. 首先利用时间戳生成唯一文件名, ...

  6. RequireJS 主入口加载模块经常会加载失败的问题

    在接入requirejs时,在main入口遇到了这样的问题,使用jquery,刷新10次页面会有3-4次加载失败,找不到$符号等等 require.config({ 'baseUrl': './mod ...

  7. javascript 数组排序

    var arr=[1,2,3,5,10,4,2,19,2,0]; alert(arr);//[1,2,3,5,10,4,2,19,2,0] arr.sort(function (a, b) {//升序 ...

  8. 题解 P2550 【[AHOI2001]彩票摇奖】

    题目链接 大家有没有发现数据范围好小呀 我们只需要开7~8的数组就好!! 中间比较的时候懒得用for循环比较了.直接爆搜. 废话不多说,直接上代码. #include<bits/stdc++.h ...

  9. Shell等,不等......

    -eq           //等于 -ne           //不等于 -gt            //大于 (greater ) -lt            //小于  (less) -g ...

  10. CPU 的工作原理

    内部架构 CPU 的根本任务就是执行指令,对计算机来说最终都是一串由 0 和 1 组成的序列.CPU 从逻辑上可以划分成 3 个模块,分别是控制单元.运算单元和存储单元 .其内部架构如下: [1]控制 ...