Bug report #11909
Pre-rendered map display does not respect rotation
|Affected QGIS version:||master||Regression?:||No|
|Operating System:||Easy fix?:||No|
|Pull Request or Patch supplied:||No||Resolution:||fixed/implemented|
|Crashes QGIS or corrupts data:||No||Copied to github as #:||20119|
The map shown on zoom/pan events as a placeholder while renderer completes his work in a thread does not take rotation in consideration.
This means that a rotated map is placed in the wrong place until renderer completes, giving a "jumpy" effect to the experience.
See further discussion in issues #11811
One known problem is a limitation of the QgsMapCanvasItem interface which allows to set the position and size of an item by specifying its spatial extent (in map coordinate space) which tipically users obtain by asking for the "visible extent" of the MapCanvas. In presence of rotation, the upper-left corner of the visible extent is usually outside of the viewport.
#1 Updated by Mathieu Pellerin - nIRV over 6 years ago
IMO, this shouldn't be a feature request. It's an implementation issue. But that's all semantic :) it however would have to be dealt with before allowing for a status bar rotation box as for the average user, the visual jump is not a great experience.
#6 Updated by Mathieu Pellerin - nIRV over 6 years ago
- File pan_rotated_better.mp4 added
Here's an ever better video, showing jumps with a simple project of two layers (the forest cover is quite a large dataset, ideal to witness the jump).
I noticed the actual incremental drawing of the forest cover polygons are drawn at the wrong location, until all of the layer is drawn.
#7 Updated by Sandro Santilli over 6 years ago
The way I try to witness the jump is unchecking the "Renderer" checkbox and panning/zooming/rotating and finally re-check "Renderer" to verify the rendered map is at the same location as the pre-rendered one.
It works for me with a raster layer and two vector layers (postgis and memory).
Where does your forest cover comes from ?
#8 Updated by Sandro Santilli over 6 years ago
After obtaining the shapefile of the land cover I could still not reproduce.
My rendering options are: do not use rendere caching, do not use parallel layers rendering, map update interval: 250ms.
I confirm with "Render" unchecked everything looks fine, so the jump you see might be coming from a partial rendering event.
#10 Updated by Sandro Santilli over 6 years ago
The problem is likely with the QgsMapCanvasMap (item) being updated on "rendererJobFinished" event which is "late".
Doesn't take any special layer to reproduce, can be done also with a simple one.
It needs rendering to be activated but shows only until it is not complete.
Martin, do you have any trick to make the "partial" rendering visible, avoiding a completion event ?