单文档,最大化,Mapwingis添加图层,实现label,在矢量图层上动态显示移动目标
//**********************************************************************************
//有机会下载安装了mapwingis,试图利用MFC对其二次开发利用,可惜网上能够查到的资料多为C#,VC资料太少。
//经过几天的研究,参考了网上网友的资料,利用VC实现了mapwingis部分功能的开发,为了和我有相同需求的码农们着想,
//少走弯路,特开发部分示例代码,以抛砖引玉。
// 禾呈 && 博士 2019-6-12
//**********************************************************************************
- MapWinGIS5.0.1.0-Win32安装
- 创建单文档,采用CFormView
- 添加控件和变量
map1.h中添加:using namespace mapWindow;
stdafx.h中添加:#import "c:\dev\MapWinGIS\MapWinGIS.ocx"rename_namespace("mapWindow") rename("GetObject","GISGetObject") rename("max","mapMax") rename("min","mapMin")
- 启动运行发现窗体不能最大化,添加
m_pMainWnd->ShowWindow(SW_SHOWDEFAULT);//解决窗体最大化问题
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
- 实现控件随着窗体大小变化
在onsize()中添加
if(m_map.m_hWnd == NULL)return;
if(IsWindow(m_map.m_hWnd))
{
CRect rect;
GetClientRect(&rect);
m_map.MoveWindow(rect,FALSE);
m_map.ZoomToPrev();
}
- 添加图层
void CmapwingisTest2View::OnToolsAddLayer()
{
TCHAR szFilters[]= _T("TIFF Files (*.tif)|*.tif|SHP Files (*.shp)|*.shp||");
CFileDialog fileDlg (TRUE,_T("tif"),_T("*.tif"),
OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
if( fileDlg.DoModal ()!=IDOK ) return;
CString m_strFilePath = fileDlg.GetPathName();
if (_T("")!=m_strFilePath)
{
// 先删除所有图层
//m_map.RemoveAllLayers();
// 获取后缀名判断文件是tif图像还是shp文件
CString strExt = m_strFilePath.Right(3);
if (_T("tif")==strExt)
{
// 创建图像接口打开图像加入地图
mapWindow::IImagePtr pImage;
pImage.CreateInstance(__uuidof(mapWindow::Image));
pImage->Open(_bstr_t(m_strFilePath),mapWindow::USE_FILE_EXTENSION,TRUE,NULL);
m_map.AddLayer(pImage,true);
}
if (_T("shp")==strExt)
{
mapWindow::IShapefilePtr pshapefilebound;
pshapefilebound.CreateInstance(__uuidof(mapWindow::Shapefile));
pshapefilebound->Open(_bstr_t(m_strFilePath),false );
m_map.AddLayer( pshapefilebound,TRUE) ;
return;
}
}
return;
}
- 实现放大,缩小,漫游,复位等功能
void CmapwingisTest2View::OnWindowsZoomin()
{
m_map.SetCursorMode(cmZoomIn); //放大
}
void CmapwingisTest2View::OnWindowsZoomout()//缩小