На лету в QgsMapCanvas QGIS 3.10.3 не работает - PullRequest
0 голосов
/ 18 марта 2020

Я пишу простую программу для отображения растровых данных с использованием qgis api C ++ (QGIS 3.10.3). Когда я добавляю два растровых слоя в одну и ту же область, но с другой системой координат, функция «на лету» не работает на моем mapCanvas. Кто-нибудь может мне помочь? Вот мой код:

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 Ответ

0 голосов
/ 21 марта 2020

Я решил свою проблему, добавив следующий код:

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