Mapwingis-MFC-在矢量图层上动态显示移动目标

单文档,最大化,Mapwingis添加图层,实现label,在矢量图层上动态显示移动目标

 

//**********************************************************************************

//有机会下载安装了mapwingis,试图利用MFC对其二次开发利用,可惜网上能够查到的资料多为C#,VC资料太少。

//经过几天的研究,参考了网上网友的资料,利用VC实现了mapwingis部分功能的开发,为了和我有相同需求的码农们着想,

//少走弯路,特开发部分示例代码,以抛砖引玉。

// 禾呈 &&  博士  2019-6-12

//**********************************************************************************

  1. MapWinGIS5.0.1.0-Win32安装
  2. 创建单文档,采用CFormView
  3. 添加控件和变量

 

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")

  1. 启动运行发现窗体不能最大化,添加

 

    m_pMainWnd->ShowWindow(SW_SHOWDEFAULT);//解决窗体最大化问题

    m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

    m_pMainWnd->UpdateWindow();

  1. 实现控件随着窗体大小变化

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();

 

    }

 

  1. 添加图层

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;

}

 

 

  1. 实现放大,缩小,漫游,复位等功能

void CmapwingisTest2View::OnWindowsZoomin()

{

         m_map.SetCursorMode(cmZoomIn); //放大

}

 

 

void CmapwingisTest2View::OnWindowsZoomout()//缩小

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值