Dacă plugin-ul dvs. folosește propriile metode de a randa un strat de hartă, scrierea propriului tip de strat, bazat pe QgsPluginLayer, ar putea fi cea mai indicată.
Verificați corectitudinea și elaborați cazuri de utilizare corectă pentru QgsPluginLayer, ...
Mai jos este un exemplu minimal de implementare pentru QgsPluginLayer. Acesta este un extras din Exemplu de plugin filigran
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
De asemenea, pot fi adăugate metode pentru citirea și scrierea de informații specifice, în fișierul proiectului
def readXml(self, node):
pass
def writeXml(self, node, doc):
pass
Când încărcați un proiect care conține un astfel de strat, este nevoie de o fabrică de clase
class WatermarkPluginLayerType(QgsPluginLayerType):
def __init__(self):
QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)
def createLayer(self):
return WatermarkPluginLayer()
Puteți adăuga, de asemenea, codul pentru afișarea de informații personalizate în proprietățile stratului
def showLayerProperties(self, layer):
pass