QGIS API Documentation  3.22.4-Białowieża (ce8e65e95e)
qgsmaplayerfactory.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayerfactory.cpp
3  --------------------------------------
4  Date : March 2021
5  Copyright : (C) 2021 by Nyall Dawson
6  Email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "qgsmaplayerfactory.h"
19 #include "qgsvectorlayer.h"
20 #include "qgsrasterlayer.h"
21 #include "qgsmeshlayer.h"
22 #include "qgspointcloudlayer.h"
23 #include "qgsvectortilelayer.h"
24 #include "qgsannotationlayer.h"
25 
26 QgsMapLayerType QgsMapLayerFactory::typeFromString( const QString &string, bool &ok )
27 {
28  ok = true;
29  if ( string.compare( QLatin1String( "vector" ), Qt::CaseInsensitive ) == 0 )
31  else if ( string.compare( QLatin1String( "raster" ), Qt::CaseInsensitive ) == 0 )
33  else if ( string.compare( QLatin1String( "mesh" ), Qt::CaseInsensitive ) == 0 )
35  else if ( string.compare( QLatin1String( "vector-tile" ), Qt::CaseInsensitive ) == 0 )
37  else if ( string.compare( QLatin1String( "point-cloud" ), Qt::CaseInsensitive ) == 0 )
39  else if ( string.compare( QLatin1String( "plugin" ), Qt::CaseInsensitive ) == 0 )
41  else if ( string.compare( QLatin1String( "annotation" ), Qt::CaseInsensitive ) == 0 )
43 
44  ok = false;
46 }
47 
49 {
50  switch ( type )
51  {
53  return QStringLiteral( "vector" );
55  return QStringLiteral( "raster" );
57  return QStringLiteral( "plugin" );
59  return QStringLiteral( "mesh" );
61  return QStringLiteral( "vector-tile" );
63  return QStringLiteral( "annotation" );
65  return QStringLiteral( "point-cloud" );
66  }
67  return QString();
68 }
69 
70 QgsMapLayer *QgsMapLayerFactory::createLayer( const QString &uri, const QString &name, QgsMapLayerType type, const LayerOptions &options, const QString &provider )
71 {
72  switch ( type )
73  {
75  {
76  QgsVectorLayer::LayerOptions vectorOptions;
77  vectorOptions.transformContext = options.transformContext;
78  vectorOptions.loadDefaultStyle = options.loadDefaultStyle;
79  return new QgsVectorLayer( uri, name, provider, vectorOptions );
80  }
81 
83  {
84  QgsRasterLayer::LayerOptions rasterOptions;
85  rasterOptions.transformContext = options.transformContext;
86  rasterOptions.loadDefaultStyle = options.loadDefaultStyle;
87  return new QgsRasterLayer( uri, name, provider, rasterOptions );
88  }
89 
91  {
92  QgsMeshLayer::LayerOptions meshOptions;
93  meshOptions.transformContext = options.transformContext;
94  meshOptions.loadDefaultStyle = options.loadDefaultStyle;
95  return new QgsMeshLayer( uri, name, provider, meshOptions );
96  }
97 
99  {
100  const QgsVectorTileLayer::LayerOptions vectorTileOptions( options.transformContext );
101  return new QgsVectorTileLayer( uri, name, vectorTileOptions );
102  }
103 
105  {
106  const QgsAnnotationLayer::LayerOptions annotationOptions( options.transformContext );
107  return new QgsAnnotationLayer( name, annotationOptions );
108  }
109 
111  {
112  QgsPointCloudLayer::LayerOptions pointCloudOptions;
113  pointCloudOptions.loadDefaultStyle = options.loadDefaultStyle;
114  pointCloudOptions.transformContext = options.transformContext;
115  return new QgsPointCloudLayer( uri, name, provider, pointCloudOptions );
116  }
117 
119  break;
120  }
121  return nullptr;
122 }
Represents a map layer containing a set of georeferenced annotations, e.g.
static QgsMapLayerType typeFromString(const QString &string, bool &ok)
Returns the map layer type corresponding a string value.
static QString typeToString(QgsMapLayerType type)
Converts a map layer type to a string value.
static QgsMapLayer * createLayer(const QString &uri, const QString &name, QgsMapLayerType type, const LayerOptions &options, const QString &provider=QString())
Creates a map layer, given a uri, name, layer type and provider name.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:97
Represents a map layer supporting display of point clouds.
Represents a raster layer.
Represents a vector layer which manages a vector based data sets.
Implements a map layer that is dedicated to rendering of vector tiles.
QgsMapLayerType
Types of layers that can be added to a map.
Definition: qgis.h:47
@ PointCloudLayer
Added in 3.18.
@ MeshLayer
Added in 3.2.
@ VectorTileLayer
Added in 3.14.
@ AnnotationLayer
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
Setting options for loading annotation layers.
Setting options for loading layers.
QgsCoordinateTransformContext transformContext
Transform context.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
Setting options for loading mesh layers.
Definition: qgsmeshlayer.h:105
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Definition: qgsmeshlayer.h:118
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
Definition: qgsmeshlayer.h:124
Setting options for loading point cloud layers.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading raster layers.
bool loadDefaultStyle
Sets to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading vector layers.
bool loadDefaultStyle
Set to true if the default layer style should be loaded.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for loading vector tile layers.