On-the-fly in QgsMapCanvas of QGIS 3.10.3 does not work

150 Views Asked by At

I am writing a simple program to display raster data using qgis api C++ (QGIS 3.10.3).
When I add two rasterlayer in the same area but have different coordinate system, the on-the-fly feature does not work on my mapCanvas.
Can someone help me?
Here is my code:

mMapCanvas = new QgsMapCanvas(centralWidget);
QGridLayout* gridLayout = new QGridLayout;
gridLayout->addWidget(mMapCanvas);
centralWidget->setLayout(gridLayout);

QgsRasterLayer* rasterLayer1 = new QgsRasterLayer("D:\\Test\\image1.tif"); //EPSG:4326
QgsRasterLayer* rasterLayer2 = new QgsRasterLayer("D:\\Test\\image2.tif"); //EPSG:3406
mMapCanvas->setLayers({rasterLayer1, rasterLayer2});
mMapCanvas->zoomToFullExtent();
1

There are 1 best solutions below

0
Bach Nguyen On

I solved my problem by adding the following code:

connect(QgsProject::instance(), &QgsProject::crsChanged, [=] {
    QgsCoordinateReferenceSystem crs = QgsProject::instance()->crs();
    mMapCanvas->setDestinationCrs(crs);
});