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(); } |