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