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.
Comprobar la corrección y elaborar buenos casos de uso de 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