PIE二次开发(二)地图控件及图层管理学习
好久没更新了,周末来偷半日闲。反正自己的开发进度目前尚可,核心功能已经实现,集成也做了一部分。考虑之后有可能要做现阶段工作汇报,及时整理一下吧。过程中间也出现了很多关于C#和数据库操作和使用基础问题,予以总结。文档整理,思路可能比较乱,(特别是代码,还要去翻以前的DEMO)反正…加油吧,阿喵一定行。
主要内容: ①地图IMap接口,②地图控件Mapcontrol,③图层管理。
1. 地图IMap接口
2. 地图控件Mapcontrol
3. 图层管理
1.地图IMap接口
作为一名典型实用型博主(非理论科班出身),真的说不清楚接口这个概念。我曾在ArcGIS
API for Python入门介绍写过一点点关于API的简介。当时,我视这个API为自己手里的车钥匙,当你根据你不同出门的需求时,选择不同的车来达到自己的目的。现在想想,这一比喻并不完全恰当。因为一把车钥匙和车之间是唯一对应的。但是,PIE的接口(或者大多数二次开发的接口,也并不是一一对应的关系。)存在多种对象都支持某个接口的情况。
一个接口对应一个子类,通过这个接口就能在程序中访问和实现该子类的属性和功能。IMap从接口命名就可以看出来,实现的是Map子类的功能。其余所有的接口命名规则都是:I+Class。Map类常用的属性和方法整理如下:
属性 | 描述 |
---|---|
ID | 获取地图ID |
LayerCount | 获取地图图层数目 |
Name | 获取或设置地图名称 |
SelectionFeatureCount | 选中要素个数 |
SpatialReference | 获取或设置控件参考 |
方法 | 描述 |
---|---|
AddLayer(ILayer) | 添加图层 |
ClearLayers() | 清除图层 |
DeleteLayer(arg) | 删除指定图层,可选索引号或者图层名 |
SelectFeature(String, Int64) | 选择要素 |
GetSelectionFeatures() | 获得选择要素 |
ToMapPoint() | 屏幕点转为地面点 |
2.地图控件Mapcontrol
IMap实现得访问是对Map对象的操作,要想把地图展现到地图上仍需要一个地图容器——MapControl,地图控件。MapControl和Map的关系可以理解为管理器的关系,也可以可视化的理解为是容器与内容的关系。在PIE-SDK或者其他GIS软件也是一样,一个软件来展示地图:
总结MapControl控件常用的属性和方法如下:
属性 | 描述 |
---|---|
ID | 获取地图ID |
LayerCount | 获取地图图层数目 |
Name | 获取或设置地图名称 |
SelectionFeatureCount | 选中要素个数 |
SpatialReference | 获取或设置控件参考 |
方法 | 描述 |
---|---|
AddLayer(ILayer) | 添加图层 |
ClearLayers() |