http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:    关于TopMap有奖活动奖品领取公告        
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> ArcObjects开发 >> 正文

浅析MapControl加载三个加载数据的函数

作者:3S_Studi…    文章来源:本站原创    点击数:    更新时间:2007-9-25

Method AddLayer Adds a layer to the Map's collection of layers at the specified index position.
Method AddLayerFromFile Loads a layer file and adds it to the Map's collection of layers at the specified index position.
Method AddShapeFile Adds a shapefile as a layer to the Map.

上面是MapControl支持的三个加载数据的函数。下面我们利用这三个函数来完成图层文件,栅格数据和矢量数据到MapControl中的加载,之所以说是图层文件,没说图层数据,是区别于栅格和矢量数据的,因为图层文件(.lyr)本身没有数据,他只是真正的数据导出的一个文件,记录的数据源及其设置(符号颜色等)。

1,利用AddLayer来加载图层文件
m_mapCtrlMain.AddLayerFromFile(szPathName, 0);
其中CMapCtrl m_mapCtrlMain是与MapControl绑定的控件变量;CString szPath是.lyr图层文件的路径文件名。

2,利用AddLayerFromFile加载栅格数据
IRasterLayerPtr ipRasLyr(CLSID_RasterLayer);  
_bstr_t bstrFile = szPathName.GetBuffer(szPathName.GetLength());
BSTR BstrFile = bstrFile;
ipRasLyr->CreateFromFilePath(BstrFile);
m_mapCtrlMain.AddLayer(ipRasLyr, 0);
其中,CString szPathName为栅格数据的路径文件名

3,利用AddShapFile加载矢量数据
m_mapCtrlMain.AddShapeFile(szPath, szFileName);
其中CString szPath为路径名,CString szFileName为文件名

如果把这三个函数集合到一起,做成一个通用的函数的加载数据的函数话,好么就是下面的

//参数列表:
szPath  ------路径
szFileName ---文件名
ImgFormat ----数据格式(见后面介绍)
void CImgShowView::AddImg(CString szPath, CString szFileName, ImgFormat Format)
{
      CString szPathName = szPath + "\\" + szFileName;
      if (Format == BMP || Format == IMG) { //还可以增加其他栅格类型
          IRasterLayerPtr ipRasLyr(CLSID_RasterLayer); 
          _bstr_t bstrFile = szPathName.GetBuffer(szPathName.GetLength());
          BSTR BstrFile = bstrFile;
          ipRasLyr->CreateFromFilePath(BstrFile);
          m_mapCtrlMain.AddLayer(ipRasLyr, 0);
     }
     else if (Format == SHP) {
         m_mapCtrlMain.AddShapeFile(szPath, szFileName);
     }
     else if (Format == LYR) {
          m_mapCtrlMain.AddLayerFromFile(szPathName, 0);
     }
     IActiveViewPtr ipActView = m_mapCtrlMain.GetActiveView();
     ipActView->Refresh();
}

enum ImgFormat //标志数据格式,当然数据格式自己还可以再加
{
     BMP,
     IMG,
     SHP,
     LYR
};

Tags:MapControl AO 加载 数据 图层  
责任编辑:3S_Studio
相关文章列表
没有相关文章
请文明参与讨论,禁止漫骂攻击。 昵称:注册  登录
[ 查看全部 ] 网友评论
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 论坛地图 - 在线帮助