Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke.
QgsSimpleMarkerSymbolLayer
类是简单标记图层(Simple marker Layer),类图如下QgsSimpleMarkerSymbolLayer (Qgis::MarkerShape shape=Qgis::MarkerShape::Circle, double size=DEFAULT_SIMPLEMARKER_SIZE, double angle=DEFAULT_SIMPLEMARKER_ANGLE, Qgis::ScaleMethod scaleMethod=DEFAULT_SCALE_METHOD, const QColor &color=DEFAULT_SIMPLEMARKER_COLOR, const QColor &strokeColor=DEFAULT_SIMPLEMARKER_BORDERCOLOR, Qt::PenJoinStyle penJoinStyle=DEFAULT_SIMPLEMARKER_JOINSTYLE)
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
auto markerSymbolLayer = new QgsSimpleMarkerSymbolLayer(Qgis::MarkerShape::Heart,4.0);
QgsSymbolLayerList layerList;
layerList << markerSymbolLayer;
auto markerSymbol = new QgsMarkerSymbol(layerList);
singleRenderer->setSymbol(markerSymbol);
layer->setRenderer(singleRenderer);
provides you with images from your SVG paths to render as marker symbol.
Each SVG file colors and stroke can also be adapted.
QgsSvgMarkerSymbolLayer
类是SVG标记图层(SVG marker layer),类图如下QgsSvgMarkerSymbolLayer (const QString &path, double size=DEFAULT_SVGMARKER_SIZE, double angle=DEFAULT_SVGMARKER_ANGLE, Qgis::ScaleMethod scaleMethod=DEFAULT_SCALE_METHOD)
QgsFeatureRenderer * layerRenderer= layer->renderer();
QgsSingleSymbolRenderer *singleRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
//构造Svg标记层(Svg Marker SymbolLayer)方法一
//作为示例,用到了path和size两个参数,其他参数使用类似
QString path = QStringLiteral("resources/plane.svg");
auto markerSymbolLayer = new QgsSvgMarkerSymbolLayer(path,4.0);
//QgsMarkerSymbol构造函数中需要传入QgsSymbolLayerList
//多个Symbol Layer构成一个Symbol
QgsSymbolLayerList layerList;
layerList << markerSymbolLayer;
auto markerSymbol = new QgsMarkerSymbol(layerList);
singleRenderer->setSymbol(markerSymbol);
layer->setRenderer(singleRenderer);