浅谈SuperMapiDesktopX桌⾯扩展开发
作者:dongyx
SuperMap iDesktopX是业界⾸款跨平台全功能桌⾯ GIS 软件,⽀持主流Linux操作系统,突破了专业桌⾯ GIS 软件只能运⾏于Windows 环境的困境。提供空间数据⽣产及加⼯、空间⼤数据管理分析、可视化建模、服务发布等功能,可⽤于数据⽣产、加⼯、处理、分析以及制图。现在很多客户使⽤的场景不同,所以很多客户想利⽤扩展开发定制开发出属于⾃⼰应⽤场景的桌⾯软件。接下来我就谈⼀下如何对SuperMap iDesktopX 10.1.0版本进⾏定制开发。
SuperMap iDesktopX 是通过SuperMap iObjects Java 组件构建的⼀款企业级、插件式、跨平台桌⾯GIS应⽤与开发平台,可通过Java 语⾔进⾏扩展开发。我们的产品⽬录也给⼤家提供了扩展⼯程模板,模板位于安装⽬录/templates/sampleCode⽂件夹,是扩展开发⽰例模板⼯程。
⼀、修改iDesktopX桌⾯软件标题
1.⽂件–选项–环境中修改iDesktopX标题
2.通过修改配置⽂件的⽅式修改iDesktopX标题,修改安装⽬录/configuration/SuperMap.Desktop.Par
⼆、开发环境配置
1.开发⼯程配置
1.1 在IDEA开发平台中打开模板⼯程。模板位于安装⽬录/templates/sampleCode⽂件夹
似的造句1.2 配置jdk环境:设置⼯程的jdk环境为1.8
1.3 添加桌⾯依赖,点击File–project Structure, 在弹出框中依次选中 Global Libraries->添加->JAVA,在弹出的 Select Library Files 对话框中,同时选中以下 4 个⽬录,单击 OK 按钮后,
选择 develop,即可将桌⾯依赖添加⾄⼆次开发插件。
1. %iDesktopX 产品包%/bin/
2. %iDesktopX 产品包%/bundles/idesktop_bundles/
3. %iDesktopX 产品包%/bundles/require_bundles/
超模孙菲菲
4. %iDesktopX 产品包%/lib/
1.4 ⼯程编译成功运⾏程序可以⾃动启动SuperMap iDesktopX,启动后可以“开始”选项卡中会增加⼆次开发分组,包含了⼆传开发
⽰例、删除重复点两个功能,这样就表⽰环境配置成功
李孝利前男友2.⼯程模板介绍
⽰例模板⼯程即 SampleCode ⼯程,其中 Develop module 就是我们的开发 module
2.1 SampleCode Module
SampleCode Module 主要通过此 module 的 pom ⽂件管理远程仓库地址及所有⼦
module(⾃定义插件),不实现任何具体功能。详情参见 SampleCode 的 l ⽂件。注意:jar ⽣成路径不可修改。
2.2 Develop module
Develop module 是扩展开发⽰例 module,内部主要的类有三个,分别为 MyStartUp、
DevelopPlugin、CtrlActionSampleCode。
2.2.1MyStartUp
MyStartUp 是⼆次开发启动的⼊⼝。
2.2.2DevelopPlugin
DevelopPlugin 是插件类必须实现,其命名规则为 module name+“Plugin”,必须继承
实现 AbstractPlugin 类,否则 Develop module 所有功能都⽆法使⽤,具体实现⽅式参见
DevelopPlugin 类。
2.2.3CtrlActionSampleCode
CtrlActionSampleCode 是⽰例开发类。CtrlActionSampleCode 类中包含了⽤于响应控
件事件触发时所要执⾏的内容,即与 UI 控件绑定的类,该类必须继承⾃ CtrlAction 类。具
体实现⽅式参见 CtrlActionSampleCode 类。
2.2.4配置 CtrlAction
实现功能之后,就需要在相应配置⽂件中进⾏配置,跟 UI 绑定。即将功能对应的
CtrlAction 类名称写到 module 对应配置⽂件中相应控件的 onAction 属性中。
注意:⼀个 module 对应⼀个配置⽂件,配置⽂件必须存在且正确配置,否则⽆法加载对
应 module。配置⽂件位于%模块⽬录%\src\main\resources\⽂件夹下。(⾃定义启动
module 不需要配置⽂件,只有界⾯功能需要配置⽂件)
⽰例配置⽂件参见 SuperMap.fig
三、以缓冲区分析为例
1.在Develop module中创建⼀个buffer的包名和⼀个buffer类。buffer类必须继承CtrlAction类。在run函数写缓冲区分析的业务
代码
//获取当前打开的⼯作空间
Workspace workspace = ActiveApplication().getWorkspace();
Dataset dataset = Datasources().get(0).getDatasets().get("New_Line");
//新建⼀个地图窗⼝
IFormMap formMap =(FormMap) FormUtilities.fireNewWindowEvent(WindowType.MAP,"dyx"); MapControl mapControl = MapControl();
DatasetVectorInfo datasetVectorInfo =new DatasetVectorInfo();
datasetVectorInfo.setEncodeType(EncodeType.NONE);
datasetVectorInfo.setType(DatasetType.REGION);
datasetVectorInfo.setName("buffer");
DatasetVector result = Datasources().get(0).getDatasets().create(datasetVectorInfo); BufferAnalystParameter bufferParameter =new BufferAnalystParameter();
bufferParameter.setEndType(BufferEndType.FLAT);生旦净末丑分别指什么
bufferParameter.setLeftDistance(100);
bufferParameter.setRightDistance(100);
天天向上刘畅DatasetVector datasetVector =(DatasetVector)dataset;
//调⽤创建⽮量数据集缓冲区⽅法
2.配置CtrlAction网关地址
3.在IDEA开发平台中运⾏该⼯程,启动SuperMap iDesktopX桌⾯,运⾏结果如下: