PIE SDK For C++地图范围设置
1.功能简介
地图范围设置主要就是对图层的地图浏览控制,例如地图的放大、缩小、漫游、全图显示、1:1视图等功能,能更好的与地图有一个互动的地图浏览体验。PIE SDK对地图范围设置主要利用ICommand命令或者ITool对对应功能命令的调用,调用简单易于实现。
2.功能实现说明
2.1. 实现思路及原理说明
第一步 |
创建对应的命令实例化对象 |
第二步 |
创建插件对象 |
第三步 |
调用OnClick方法触发事件 |
2.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
SysUI::ICommandPtr |
OnClick |
点击事件 |
OnCreate |
创建插件对象 |
|
SysUI::CMDPluginModule |
CreateLibCommand(const QString& strLibName, const QString& strCmd, const QString& strParam = QString()) 注:strLibName 库名称,strCmd 命令插件名称 , strParam 默认参数;以下命令均在MapBrowser.dll文件下 |
|
MapBrowser_ZoomIn |
拉框放大构造函数 |
|
MapBrowser_ZoomOut |
拉框缩小构造函数 |
|
MapBrowser_Pan |
平移漫游构造函数 |
|
MapBrowser_FullExtent |
全图显示构造函数 |
|
MapBrowser_ZoomToNativeResolution |
1:1显示构造函数 |
|
MapBrowser_CenterZoomIn |
中心放大构造函数 |
|
MapBrowser_CenterZoomOut |
中心缩小构造函数 |
2.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/02.地图操作/01.地图范围设置 |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif |
视频路径 |
百度云盘地址下/PIE视频教程/02.地图操作/01.地图范围设置.avi |
示例代码 |
|
注:通过QAction的Triggered信号进行事件的绑定 /** 拉框放大地图 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapZoomIn_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_ZoomIn"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); SysUI::IToolPtr ptrTool = ptrCmd; if (ptrTool == nullptr) return; m_pCurrentControl->SetCurrentTool(ptrTool); } /** 拉框缩小地图 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapZoomOut_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_ZoomOut"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); SysUI::IToolPtr ptrTool = ptrCmd; if (ptrTool == nullptr) return; m_pCurrentControl->SetCurrentTool(ptrTool); } /** 地图平移 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapPan_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_Pan"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); SysUI::IToolPtr ptrTool = ptrCmd; if (ptrTool == nullptr) return; m_pCurrentControl->SetCurrentTool(ptrTool); } /** 全图显示 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapFullExtent_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_FullExtent"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); } /** 1:1显示地图 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionZoomToNativeResolution_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_ZoomToNativeResolution"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); } /** 固定放大 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapFixedZoomIn_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_CenterZoomIn"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); } /** 固定缩小 * @brief * @param[in] bool checked 是否选中 * @return */ void PIEMainWindow::On_ActionMapFixedZoomOut_Triggered(bool checked) { SysUI::ICommandPtr ptrCmd = SysUI::CMDPluginModule::CreateLibCommand("MapBrowser", "MapBrowser_CenterZoomOut"); if (ptrCmd == nullptr) return; ptrCmd->OnCreate(m_pCurrentControl); ptrCmd->OnClick(); }
|
2.4. 示例截图
以全图显示为例进行截图,对比图如下: