Thanks for comments Martin

The scale box is not the map scale, it relates to the scale of arrow symbols. I 
did originally have it implemented on the renderComplete signal, which worked 
fine, but of course doesn't display in the printed maps.

I thought that making it a plugin layer would be an effective way of having it 
render regardless of whether it was on the screen or in a printed map.  However 
that has lead to the problem with the labelling, as per the original question.

Certainly going back to the original implementation, and looking at the 
QgsMapCanvasItem API is a good alternative, if more complex.

More generally though having labels plotting after the layers can be a bit 
weird.  For example if I have a point layer underneath a polygon layer I end up 
seeing a polygon with a whole lot of labels on top of it (which come from the 
point layer hidden beneath it).  That doesn't seem right?


Chris Crook
Technical Leader (Spatial Information Management)
Customer Services Business Development

E  [email protected] | DDI 04 4600567

Wellington Office, Level 7, Radio New Zealand House, 155 The Terrace
PO Box 5501, Wellington 6145, New Zealand | T 04 460 0110
W  www.linz.govt.nz | www.landonline.govt.nz  | data.linz.govt.nz



-----Original Message-----
From: Martin Dobias [mailto:[email protected]]
Sent: Monday, 28 January 2013 10:21 a.m.
To: Chris Crook
Cc: [email protected]
Subject: Re: [Qgis-developer] Plugin layer and labelling

Hi Chris

On Sun, Jan 27, 2013 at 8:41 PM, Chris Crook <[email protected]> wrote:
> I'm updating a plugin to use a plugin layer to display a scale box, and I 
> have a problem with labelling from other layers appearing on top of my plugin 
> layer.
>
>
> I'm using a plugin layer so that the scale box will appear on the map when it 
> is printed.  It basically draws a filled rectangle and puts some text in it.  
> The problem I have is that labelling from layers underneath the scale box 
> layer end up plotting on top of it.
>
> Is there a simple way of ensuring that the box appears on top of the
> labelling.  I'm wondering about drawing the rectangle as a label
> itself with some sort of custom labelling, but that looks like a lot
> more work :-(

I think you have these options:
- hook to QgsMapCanvas::renderComplete(QPainter*) signal and draw the scale box 
in your slot
- implement a QgsMapCanvasItem that would render scale bar

By the way, there is already scale bar functionality (used to be a plugin, now 
in menu View > Decorations > Scale Bar). The logic is in QgsDecorationScaleBar 
class (in src/app/ dir).

Regards
Martin

This message contains information, which is confidential and may be subject to 
legal privilege. If you are not the intended recipient, you must not peruse, 
use, disseminate, distribute or copy this message. If you have received this 
message in error, please notify us immediately (Phone 0800 665 463 or 
[email protected]) and destroy the original message. LINZ accepts no 
responsibility for changes to this email, or for any attachments, after its 
transmission from LINZ. Thank You.
_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to