zoukankan      html  css  js  c++  java
  • PIE SDK For C++地图图层控制

    1、功能简介

      地图图层控制就是图层的相关操作,如地图图层数据的添加、删除、移动和拖拽等功能。

    2、功能实现说明 

      2.1 实现思路及原理说明 

    第一步

    图层添加是调用AddLayer方法将图层添加到地图中

    第二步

    图层删除是调用Delete方法将指定索引的图层删除

    第三步

    图层移动是调用MoveLayer方法将指定的图层移动到指定的索引位置

      2.2 核心接口与方法

    接口/

    方法/属性

    说明

    SysCarto::MapPtr

    AddLayer

    添加图层

    DeleteLayer

    删除图层

    MoveLayer

    移动图层到指定位置

    SysCarto::LayerFactory

    CreateDeFaultLayer

    创建默认图层

      2.3 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/02.地图操作/02.地图图层控制

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

    视频路径

    百度云盘地址下/PIE视频教程/02.地图操作/02.地图图层控制.avi

    示例代码

    AddCommand继承至SysFramework::BaseCommand,重写OnClick方法即可,以下各类同理

    //打开图层

    void AddDataCommand::OnClick()

    {

        QString filter = "Shapefiles (*.shp);;Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b);;S57 Files (*.000);;HDF Files (*.hdf *.h5);;NC Files (*.nc);;All Files (*.*)";

            QStringList lstFile = QFileDialog::getOpenFileNames(nullptr, "添加数据", "", filter);

        if (lstFile.count() < 1) return;

        SysCarto::LayerPtr layerPtr = SysCarto::LayerFactory::CreateDefaultLayer(lstFile[0]);

        m_ptrHookHelper->GetFocusMap()->AddLayer(layerPtr);

        m_ptrHookHelper->GetActiveView()->Refresh();

    }

    //删除图层

    void DeleteLayerCommand::OnClick()

    {

        if (m_ptrHookHelper->GetFocusMap()->GetLayerCount()==0)

        {

            return;

        }

        SysCarto::LayerPtr layerPtr = m_ptrHookHelper->GetFocusMap()->GetLayer(0);

        m_ptrHookHelper->GetFocusMap()->DeleteLayer(layerPtr);

        m_ptrHookHelper->GetActiveView()->PartialRefresh(SysCarto::ViewDrawPhaseType::ViewAll, true);

    }

    //移动图层

    void MoveLayerCommand::OnClick()

    {

        if (m_ptrHookHelper->GetFocusMap()->GetLayerCount()<2)

        {

            return;

        }

        SysCarto::LayerPtr layer0 = m_ptrHookHelper->GetFocusMap()->GetLayer(0);

        m_ptrHookHelper->GetFocusMap()->MoveLayer(layer0, 1);

        m_ptrHookHelper->GetActiveView()->Refresh();

    }

      2.4 示例截图

  • 相关阅读:
    关于如何使用Microsoft Word发博客
    TEST
    信息安全系统设计基础第三周学习总结
    信息安全系统设计基础第一周学习总结
    Java程序设计实验 实验五
    实验三 敏捷开发与XP实践 实验报告
    git 连接github的配置
    nginx是什么,如何使用
    spring-boot 全面认知
    删除指定目录文件夹下的文件
  • 原文地址:https://www.cnblogs.com/PIESat/p/12362892.html
Copyright © 2011-2022 走看看