여러분의 플러그인이 맵 레이어를 렌더링하는 데 자신만의 메소드를 이용할 경우, 그 작업을 실행하기 위해 QgsPluginLayer 클래스에 기반한 사용자 지정 레이어 유형을 작성하는 것이 가장 좋습니다.
오류가 없는지 확인하고, QgsPluginLayer 클래스의 괜찮은 사용 케이스를 자세히 설명하고, ...
다음은 최소한의 QgsPluginLayer 클래스를 구현하는 예시입니다. 워터마크 예제 플러그인 에서 발췌한 코드입니다.
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
프로젝트 파일에 특정 정보를 읽고 쓰는 메소드도 추가할 수 있습니다.
def readXml(self, node):
pass
def writeXml(self, node, doc):
pass
플러그인 레이어를 담고 있는 프로젝트를 불러올 경우, 팩토리 클래스가 필요합니다.
class WatermarkPluginLayerType(QgsPluginLayerType):
def __init__(self):
QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)
def createLayer(self):
return WatermarkPluginLayer()
레이어 속성에 사용자 지정 정보를 표출하기 위한 코드도 추가할 수 있습니다.
def showLayerProperties(self, layer):
pass