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

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

     

  • 相关阅读:
    Metasploit学习笔记——强大的Meterpreter
    Metasploit学习笔记——社会工程学
    Mono for Andriod学习与实践(1)— 初体验
    Xamarin.Android 在VS下调试时提示 In mgmain JNI_OnLoad 程序“Mono”已退出 解决办法
    Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
    WCF 部署时,soap:address location 显示的是电脑名,而不是ip地址
    英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*
    使用Intel HAXM 加速你的Android模拟器
    Xamarin Studio Android 配置
    Xamarin C# Android for Visual Studio 平台安装
  • 原文地址:https://www.cnblogs.com/PIESat/p/12362730.html
Copyright © 2020-2023  润新知