マップレイヤをレンダーするためにプラグインを使うなら、QgsPluginLayerに基づいたレイヤタイプを記述することが、最良な実装方法かもしれません。
QgsPluginLayerのよい利用ケースにおいて正しさと精巧さをチェックしましょう。
以下は最小限のQgsPluginLayer実装の例です。これは`Watermark example plugin <http://github.com/sourcepole/qgis-watermark-plugin>`_の抜粋です:
class WatermarkPluginLayer(QgsPluginLayer):
LAYER_TYPE="watermark"
def __init__(self):
QgsPluginLayer.__init__(self, WatermarkPluginLayer.LAYER_TYPE, \
"Watermark plugin layer")
self.setValid(True)
def draw(self, rendererContext):
image = QImage("myimage.png")
painter = rendererContext.painter()
painter.save()
painter.drawImage(10, 10, image)
painter.restore()
return True
プロジェクトファイルに固有の情報を読み書きするための方法も追加することができます:
def readXml(self, node):
def writeXml(self, node, doc):
そのようなレイヤを含むプロジェクトをロードすると、 factory クラスが必要となります:
class WatermarkPluginLayerType(QgsPluginLayerType):
def __init__(self):
QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)
def createLayer(self):
return WatermarkPluginLayer()
また、レイヤーのプロパティでカスタム情報を表示するためのコードを追加することもできます:
def showLayerProperties(self, layer):