@@ -52,6 +52,7 @@ static void _fixQPictureDPI( QPainter* p )
52
52
QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider ( QgsVectorLayer* layer, bool withFeatureLoop, const QgsPalLayerSettings* settings, const QString& layerName )
53
53
: mSettings( settings ? *settings : QgsPalLayerSettings::fromLayer( layer ) )
54
54
, mLayerId( layer->id () )
55
+ , mLayerGeometryType( layer->geometryType () )
55
56
, mRenderer( layer->rendererV2 () )
56
57
, mFields( layer->fields () )
57
58
, mCrs( layer->crs () )
@@ -80,6 +81,7 @@ QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider( const QgsPalLayerSetti
80
81
bool ownsSource, QgsFeatureRendererV2* renderer )
81
82
: mSettings( settings )
82
83
, mLayerId( layerId )
84
+ , mLayerGeometryType( QGis::UnknownGeometry )
83
85
, mRenderer( renderer )
84
86
, mFields( fields )
85
87
, mCrs( crs )
@@ -102,7 +104,17 @@ void QgsVectorLayerLabelProvider::init()
102
104
if ( mSettings .fitInPolygonOnly ) mFlags |= FitInPolygonOnly;
103
105
if ( mSettings .labelPerPart ) mFlags |= LabelPerFeaturePart;
104
106
mPriority = 1 - mSettings .priority / 10.0 ; // convert 0..10 --> 1..0
105
- mObstacleType = mSettings .obstacleType ;
107
+
108
+ if ( mLayerGeometryType == QGis::Point && mRenderer )
109
+ {
110
+ // override obstacle type to treat any intersection of a label with the point symbol as a high cost conflict
111
+ mObstacleType = QgsPalLayerSettings::PolygonWhole;
112
+ }
113
+ else
114
+ {
115
+ mObstacleType = mSettings .obstacleType ;
116
+ }
117
+
106
118
mUpsidedownLabels = mSettings .upsidedownLabels ;
107
119
}
108
120
0 commit comments