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