Plug-in-lagen gebruiken¶
Waarschuwing
Despite our constant efforts, information beyond this line may not be updated for QGIS 3. Refer to https://qgis.org/pyqgis/master for the python API documentation or, give a hand to update the chapters you know about. Thanks.
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 om dat te implementeren.
- TODO:
Juistheid controleren en uitgebreider goed te gebruiken gevallen voor QgsPluginLayer weergeven, …
Sub-klassen in QgsPluginLayer¶
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