2024年4月19日发(作者:)
Editor: 地图的编辑
一、功能描述
本工程主要演示地图几何对象的编辑,即添加、编辑、删除、移动几何对象,添加、删除、编辑节点等。
二、类及方法
用到的类
CSeWorkSpace
CSeMapWnd
方法
Close、GetDataSourceAt、GetDataSourceCount、GetMaps、IsOpen、Open
AddLayer、Close、GetAction、GetLayer、GetLayerAt、GetLayerCount、
InitialEditTextStyle、MoveBottom、MoveDown、MoveTop、MoveUp、OnDraw、
OnInitialUpdate、OnLButtonDblClk、OnLButtonDown、OnLButtonUp、
OpenMap、Refresh、RemoveLayerAt、SaveToMap、SetAction、SetEditableLayer、
ViewEntire
GetAlias、GetDatasetCount、GetDataset、GetDatasetAt
GetName、GetType
AddMap、GetMapCount、GetMap、GetMapAt 、GetMapCount、GetMapNameAt、
SetMap
GetDataset
IsEditable、IsSelectable、IsSnapable、IsVisible、SetSelectable、SetSnapable、
SetVisible
CSeDataSource
CSeDataset
CSeMaps
CSeLayer
CSeLayerDef
三、说明及约定
1、工程说明
本工程为单文档类型的工程,提供菜单和工具条两种操作方式
菜单中提供“文件、地图和编辑”三组菜单,其中:
“文件”中提供“打开地图、添加图层、关闭和退出”四个菜单项;
“地图”中除了放大、缩小、平移、点选、框选、整幅显示和刷新外,还提供“图层管理”功能;
“编辑”中有“选择编辑层、添加点、添加线、添加面、添加文本、文本编辑、移动对象、删除对象、
增加节点、编辑节点和删除节点”十一个菜单项。
工具条除地图基本操作功能外,增加了对象编辑工具条,提供的功能分别与菜单中 “编辑”中的功能和
资源相对应。
2、打开地图文件的约定
判断是否已经有地图文件打开,有则关闭;
打开地图文件后,就判断有没有地图,如果有地图,弹出打开地图对话框,选择打开地图,然后刷新地
图窗口,显示地图;如果没有地图,新建一个地图Untitled,等待添加地图(文件 — 添加图层);
对图层的操作,可通过“地图—图层管理”菜单进行。
3、编译程序的约定
eSuperMap 类库支持VC++、EVC++ 3.0 和 EVC++ 4.0三种开发环境,同时支持PDA的各种设备类型、
各种CPU类型的动态连接库和静态连接库,在编译的时候,需要指定eSuperMap类库的头文件和库文件的搜
索路径。
在EVC集成开发环境中,设置搜索路径方法,选择ToolsÆ Options Æ Directories 选中指定的运行平台、
CPU类型,然后开始设置包含头文件和库文件的路径:
1、设置头文件的搜索路径,选择Include Files , 添加一个路径搜索项,把eSuperMap类库的头文件目录
SeRSFC选进来即可;
2、设置库文件的搜索路径,选择Library Files , 添加一个路径搜索项,把eSuperMap类库的相应的库文
件目录选进来即可,比如:
具体设置请参见 联机帮助 中的开发环境设置。
四、实现过程
注:本工程是在地图基本操作工程MapOperation基础上进行的对象编辑,它的一些实现步骤和
MapOperation相同,这里只介绍重要的实现步骤和方法,详细的对象编辑参见editor工程和MapOperation
工程(有详细的注释)。
1、新建一个单文档界面的工程,命名为editor;
2、改造原有的菜单,按 “三、说明及约定”中第一条所说的设置;
3、改造原有的工具条,按 “三、说明及约定”中第一条所说的设置;
4、添加三个对话框类:CDlgSelect、CDlgLayerManager、CDlgSelectLayer,其中:
CDlgSelect是在选择要打开的地图或选择要添加的数据集时使用,添加的成员变量和函数如下:
定义变量:
CComboBox m_cmbDataSource;
//数据源列表
CListCtrl m_lstDataset; //数据集列表
CImageList m_ImageList; //数据集类型图像列表
bool m_bMap; //列表框中是否显示地图名【输入】
CString m_strMapName; //地图名【输出】
CString m_strDatasourceAlias; //数据源别名【输出】
CString m_strDatasetName; //数据集名【输出】
成员函数:
void AddMap();
//将地图名加入列表框中
void BuildColumns(int nCols, int *nWidth, CString *csCol);
//创建列表框的列
void BuildRows( int nRows, CString *pcValue, int nImage ); //创建列表框的行
void AddDataset(); //将数据集信息加入列表框中
virtual BOOL OnInitDialog(); //初始化对话框
virtual void OnOK(); //响应确定按钮操作


发布评论