PIE SDK For C++地图范围设置

1.功能简介

  地图范围设置主要就是对图层的地图浏览控制,例如地图的放大、缩小、漫游、全图显示、11视图等功能,能更好的与地图有一个互动的地图浏览体验。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

11显示构造函数

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. 示例截图

以全图显示为例进行截图,对比图如下:

 

原文地址:https://www.cnblogs.com/PIESat/p/12362730.html