效果图
运行就默认添加好街景地图。
数据准备
需要准备好,事先下载好的研究区的电子地图.tif。
在mainwindow构造函数中添加数据
//添加初始地图
QString filename = QApplication::applicationDirPath()+"/data/beijing.tif";
QFileInfo fi(filename);
QString basename=fi.baseName();//获取栅格数据名称
//步骤2:创建QgsRasterLayer类
QgsRasterLayer* rasterLayer=new QgsRasterLayer(filename,basename,"gdal");
if(!rasterLayer->isValid())//如果图层不合法
{
QMessageBox::critical(this,"error","reeor");
return;
}
QgsProject::instance()->addMapLayer(rasterLayer); //这句话加不加的话无法在图层控制器中显示
m_mapcanvas->setExtent(rasterLayer->extent());
m_layersList.append(rasterLayer);
m_mapcanvas->setLayers(m_layersList);
m_mapcanvas->setParallelRenderingEnabled(true);
m_mapcanvas->freeze(false);
m_mapcanvas->refresh();
说明
1.代码中的QApplication::applicationDirPath()就是你代码中的release文件夹的路径,不知道在哪的可以qDebug()<<filename;把下载好的地图放在这个路径下,这句代码就可以正确赋值filename字符串。
QString filename = QApplication::applicationDirPath()+"/data/beijing.tif";
2.代码中的这句话很重要,是用来高效渲染栅格图层,如果不加这句,放大的时候会很卡。
m_mapcanvas->setParallelRenderingEnabled(true);