Utilizarea straturilor plugin-ului

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ă.

DE EFECTUAT:

Verificați corectitudinea și elaborați cazuri de utilizare corectă pentru QgsPluginLayer, ...

Subclasarea 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