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)

