组件式GIS采用标准的组件技术,并支持了目前流行的编程语言如VC、C#、delphi等开发平台,使开发者省去了学习专门的GIS开发语言,使开发更简单。
我最近在用VC6.0进行GIS开发,具体的GIS开发平台是北京超图地理信息技术有限公司(http://www.supermap.com.cn)提供SuperMap Object。
首先,创建一个基于对话框的MFC应用程序,命名为Map,保持默认选项。
然后,添加SuperMap控件到工程中,先在project菜单中选择add to project中的Components and Controls,把Register ActiveX controls文件夹中的SuperMap Control 和SuperWorkspace Control加入工程中,并把两个控件加入对话框中,并适当调整SuperMap控件。
现在为SuperMap Control 和SuperWorkspace Control控件添加变量分别为m_SuperMap和m_SuperWorkspace。接着在初始化对话框的函数中(return TRUE之前)加入如下代码:
//打开地图并显示
CsoDataSource objDataSource;
CsoDatasets objDataSets;
long Index;
//建立工作空间及数据源的联系
m_SuperMap.Connect(m_SuperWorkspace.GetHandle ());
//打开数据源
objDataSource=m_SuperWorkspace.OpenDataSource("C://MyProject//world.sdb","world",0,false);
if (! objDataSource)
{
MessageBox("打开数据源出错!");
exit(0);
}
//获得数据集
objDataSets=objDataSource.GetDatasets();
//添加图层
for (Index=1;Index<=objDataSets.GetCount();Index++)
{
m_SuperMap.GetLayers().AddDataset(objDataSets.GetItem(COleVariant(Index)),false);
}
//刷新,显示
m_SuperMap.Refresh();
其中OpenDataSource("C://MyProject//world.sdb","world",0,false)中的第一个字符串为数据源文件全路径名,第二个为数据源别名,第三个为数据源引擎类型 ,第四个为是否只读。AddDataset的第一个参数为要添加的数据集对象,第二个参数表示是否将数据集添加到 SuperMap 的最顶层。True 表示添加到最顶层;False 表示添加到最底层 。
添加完上面的代码,编译执行就可见到你幅世界地图显示在对话框中。