Si votre extension utilise ses propres méthodes pour faire le rendu de la couche cartographique, écrire votre propre type de couche basé sur QgsPluginLayer pourrait être la meilleure façon de l’implémenter.
Vérifier que ce qui suit est correct et ajouter des détails sur de bons cas d’utilisation de QgsPluginLayer, ...
Voici un exemple d’implémentation minimaliste d’un QgsPluginLayer. Il est issu d’un extrait de l’extension 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
Des méthodes pour lire et écrire les informations spécifiques du fichier de projet peuvent également être ajoutées :
def readXml(self, node):
pass
def writeXml(self, node, doc):
pass
Lors du chargement d’un projet contenant une telle couche, une classe “factory” est indispensable :
class WatermarkPluginLayerType(QgsPluginLayerType):
def __init__(self):
QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)
def createLayer(self):
return WatermarkPluginLayer()
Vous pouvez également ajouter du code pour afficher une information personnalisée dans les propriétés de la couche :
def showLayerProperties(self, layer):
pass