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 cel mai bun mod de a implementa acest lucru.
Verificați corectitudinea și elaborați cazuri de corectă utilizare pentru QgsPluginLayer, ...
Below is an example of a minimal QgsPluginLayer implementation. It is an excerpt of the Watermark example plugin:
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