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

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