.
在使用C++基于QGIS二次开发时想要加载一下在线地图,就有了下面的内容。目前只试了wms格式的地图,下面为实现函数,直接调用就可以。
//OSM在线地图-投影坐标系
addOpenSourceRasterLayer("type=xyz&url=http://c.tile.openstreetmap.org/{z}/{x}/{y}.png", "OSM", "wms");
//加载在线地图
void MyQGIS::addOpenSourceRasterLayer(const QString & url, const QString & basename, const QString & providerKey)
{
QgsRasterLayer* rasterLayer = 0;
if (providerKey.isEmpty())
{
rasterLayer = new QgsRasterLayer(url, basename);
}
else
{
rasterLayer = new QgsRasterLayer(url, basename, providerKey);
}
if (!rasterLayer->isValid())
{
QMessageBox::critical(this, "error", "layer is invalid!");
return;
}
QgsProject::instance()->addMapLayer(rasterLayer);
mapCanvas->setExtent(rasterLayer->extent());
layers.append(rasterLayer);
mapCanvas->setLayers(layers);
mapCanvas->setVisible(true);
mapCanvas->freeze(false);
mapCanvas->refresh();
}