QgsMapCanvasItemとは
QgsMapCanvasItemはQgsMapCanvas上に固定表示されるクラス
QgsMapCanvasItemからさ区政されたクラスにはQgsPointRotationItem、QgsAnnotationItem、QgsVertexMarker がある。
QGISメニューの文字注記、HTMLアノテーション等が該当するクラス。
QgsMapCanvasItemからの派生
今回はQgsMapCanvasItemから派生したCopyrightItemを作成して地図上にCopyrightを表示
ポイントとしては基底クラスであるQGraphicsItemのメンバー変数にDataに文字列「AnnotationItem」をセット
これがないと描画されない。
またメンバー関数paintを可変引数にすること。
QgsMapCanvasItemには引数が異なるpaint関数が存在する。
これに対応するために。
# -*- coding: utf-8 -*- # Import the PyQt and QGIS libraries from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * class CopyrightItem(QgsMapCanvasItem): def __init__(self, canvas): QgsMapCanvasItem.__init__(self, canvas) self.center = QgsPoint(0, 0) self.size = 100 self.canvas = canvas super(CopyrightItem,self).setData(0,"AnnotationItem") def setCenter(self, center): self.center = center def center(self): return self.center def setSize(self, size): self.size = size def size(self): return self.size def boundingRect(self): return QRectF(self.center.x() - self.size/2, self.center.y() - self.size/2, self.center.x() + self.size/2, self.center.y() + self.size/2) def paint(self, painter, *args): painter.drawText(200,200, "CopyrightItem") def updatePosition(self): self.setCenter(self.center)