浅析MapControl加载三个加载数据的函数
AddLayer Adds a layer to the Map's collection of layers at the specified index position. AddLayerFromFile Loads a layer file and adds it to the Map's collection of layers at the specified index position. AddShapeFil...
- 作者:3S_Studio来源:本站原创|2007年09月25日
AddLayer | Adds a layer to the Map's collection of layers at the specified index position. | |
AddLayerFromFile | Loads a layer file and adds it to the Map's collection of layers at the specified index position. | |
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
};