本文整理汇总了Python中qgis.gui.QgsVertexMarker.updateCanvas方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVertexMarker.updateCanvas方法的具体用法?Python QgsVertexMarker.updateCanvas怎么用?Python QgsVertexMarker.updateCanvas使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.gui.QgsVertexMarker
的用法示例。
在下文中一共展示了QgsVertexMarker.updateCanvas方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Result
# 需要导入模块: from qgis.gui import QgsVertexMarker [as 别名]
# 或者: from qgis.gui.QgsVertexMarker import updateCanvas [as 别名]
class Result(object):
def __init__(self,iface,description=None,x=None,y=None,zoom=None,epsg=None):
self.iface = iface
self.canvas = self.iface.mapCanvas()
self.description = unicode(description)
self.x = float(x)
self.y = float(y)
self.zoom = int(zoom)
self.epsg = int(epsg)
self.marker = QgsVertexMarker(self.canvas)
self.marker.setIconSize(20)
self.marker.setPenWidth(3)
self.marker.setIconType(QgsVertexMarker.ICON_CROSS)
self.marker.setColor(QColor('green'))
self._active = False
self._visible = False
self._xtrans = None
self._ytrans = None
@property
def active(self):
return self._active
@active.setter
def active(self,value):
if value == True:
self._active = True
self.marker.setColor(QColor('red'))
self.marker.updateCanvas()
else:
self._active = False
self.marker.setColor(QColor('green'))
self.marker.updateCanvas()
@property
def visible(self):
return self._visible
@visible.setter
def visible(self,value):
if value == True:
if self.x is not None and self.y is not None:
self._visible = True
dest_crs = self.canvas.mapRenderer().destinationCrs()
src_crs = QgsCoordinateReferenceSystem()
src_crs.createFromEpsg(self.epsg)
transform = QgsCoordinateTransform(src_crs, dest_crs)
new_point = transform.transform(self.x, self.y)
self._xtrans = new_point.x()
self._ytrans = new_point.y()
self.marker.setCenter(new_point)
self.marker.show()
else:
self._visible = False
raise ValueError("Can't show marker without x and y coordinates.")
else:
self._visible = False
self.marker.hide()
def unload(self):
self.canvas.scene().removeItem(self.marker)
self.marker = None
def zoomTo(self):
if self._xtrans is not None and self._ytrans is not None:
r = QgsRectangle(self._xtrans,self._ytrans,self._xtrans,self._ytrans)
self.canvas.setExtent(r)
self.canvas.zoomScale(self.zoom)
self.canvas.refresh()
else:
raise ValueError("Point does not have x and y coordinates")