我正在开发自定义Qgis插件。我想以图像的形式导出地图画布以及图例。图例的代码为:
legend = QgsComposerLegend(c)
legend.model().setLayerSet(mapRenderer.layerSet())
c.addItem(legend)
问题是它添加了地图图例中的所有图层,而我只想在地图图例中包含地图范围内可见的图层。我也尝试过:
legend.setLegendFilterByMapEnabled(True)
但这似乎行不通。关于如何解决这个问题的任何想法?
我通过拆分地图图和图例图解决了这个问题。 我的意思是;为地图图创建并保存绘图后,我为图例图创建了另一个 mapcanvas 渲染器,这次我使用 removeMapLayer 方法删除了不需要的图层。然后保存图例情节。
QgsMapLayerRegistry.instance().removeMapLayer(the_unwanted_layer)
我希望这有所帮助