[Qgis-developer] Adding vertex marker to Google layers -> very
slow
Martin Dobias
wonder.sk at gmail.com
Sat Apr 9 12:41:05 EDT 2011
Hi Chris
On Fri, Apr 8, 2011 at 11:28 AM, Goo Creations <goocreations at gmail.com> wrote:
> Hi all
>
> I create a QgsVertexMarker and add it to the canvas:
>
> marker = QgsVertexMarker(self.iface.mapCanvas())
> marker.setCenter(point)
> marker.setColor(QColor(0,255,0))
> marker.setIconSize(5)
> marker.setIconType(QgsVertexMarker.ICON_CROSS)
> marker.setPenWidth(3)
> self.iface.mapCanvas().refresh()
>
> When I do this the marker is successfully added to the canvas. Everything is
> fine, when the layers loaded to the canvas are locally available (eg: normal
> raster or vector layers).
> The problem comes in with remote layers such as Google layers. When I use
> the code above on a canvas with a Google layer, it takes extremely long to
> "add" the marker.
> The problem lies in: self.iface.mapCanvas().refresh(). As far as I can see,
> refresh() reloads the entire visible area, thus requesting the image again
> from the Google server and slowing done the entire process.
You need to call refresh() of map canvas only when you really want all
layers to be redrawn. This is not the case.
Vertex markers (and other graphics items) are updated automatically
when you set their position. When setting their properties the markers
do not get updated (repainted) automatically, however you can force
update of the marker easily:
marker.update()
Hope that helps
Martin
More information about the Qgis-developer
mailing list