Als uw plug-in zijn eigen methoden gebruikt om een kaartlaag te renderen, zou het schrijven van uw eigen laagtype, gebaseerd op QgsPluginLayer, de beste manier kunnen zijn on dat te implementeren.
Juistheid controleren en uitgebreider goed te gebruiken gevallen voor QgsPluginLayer weergeven, ...
Hieronder staat een voorbeeld van een minimale implementatie van QgsPluginLayer. Het is een uittreksel van de voorbeeld plug-in Watermark
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
Methoden voor het lezen en schrijven van specifieke informatie naar het projectbestand kan ook worden toegevoegd
def readXml(self, node):
pass
def writeXml(self, node, doc):
pass
Bij het laden van een project dat een dergelijke laag bevat, is een klasse factory nodig
class WatermarkPluginLayerType(QgsPluginLayerType):
def __init__(self):
QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)
def createLayer(self):
return WatermarkPluginLayer()
U kunt ook code toevoegen voor het weergeven van aangepaste informatie in de eigenschappen van de laag
def showLayerProperties(self, layer):
pass