我正在开发自定义Qgis插件。我想以图例形式导出地图画布以及图例。图例的代码为:

legend = QgsComposerLegend(c)
legend.model().setLayerSet(mapRenderer.layerSet())
c.addItem(legend)


问题在于它在地图图例中添加了所有图层,而我只想在地图图例中包括在地图范围内可见的图层。我也尝试过:

legend.setLegendFilterByMapEnabled(True)


但这似乎不起作用。关于如何解决此问题的任何想法?

最佳答案

我已经通过拆分地图图和图例图解决了这个问题。
我的意思是 ;为地图图创建并保存图后,我为图例图创建了另一个mapcanvas-renderer,这次我使用removeMapLayer方法删除了不需要的图层,然后也保存了图例图。

QgsMapLayerRegistry.instance().removeMapLayer(the_unwanted_layer)


我希望这有帮助

07-24 09:45
查看更多