Utilizar complemento Capas

Si su complemento utiliza métodos propios para representar una capa de mapa, escribir su propio tipo de capa basado en QgsPluginLayer puede ser la mejor forma de implementarla.

TODO:

Comprobar la corrección y elaborar buenos casos de uso de QgsPluginLayer

Subclassing QgsPluginLayer

A continuación es un ejemplo de una implementación mínima de QgsPluginLayer. Es un extracto del Complemento de ejemplo de marca de agua

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

Métodos de lectura y escritura de información especifica para el archivo del proyecto también puede ser añadido

def readXml(self, node):
  pass

def writeXml(self, node, doc):
  pass

Al cargar un proyecto que contiene una capa de este tipo, se necesita una clase de fábrica

class WatermarkPluginLayerType(QgsPluginLayerType):

  def __init__(self):
    QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)

  def createLayer(self):
    return WatermarkPluginLayer()

Se puede también añadir código para mostrar información personalizada en las propiedades de la capa

def showLayerProperties(self, layer):
  pass