Skip to content

Commit e17ec09

Browse files
committedMar 17, 2015
Fix heatmap renderer not working for reprojected layers (fix #12362)
1 parent 327517d commit e17ec09

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed
 

‎src/core/symbology-ng/qgsheatmaprenderer.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ bool QgsHeatmapRenderer::renderFeature( QgsFeature& feature, QgsRenderContext& c
107107
return false;
108108
}
109109

110-
QgsGeometry* geom = feature.geometry();
111-
if ( geom->type() != QGis::Point )
110+
if ( !feature.geometry() || feature.geometry()->type() != QGis::Point )
112111
{
113112
//can only render point type
114113
return false;
@@ -139,8 +138,28 @@ bool QgsHeatmapRenderer::renderFeature( QgsFeature& feature, QgsRenderContext& c
139138
int width = context.painter()->device()->width() / mRenderQuality;
140139
int height = context.painter()->device()->height() / mRenderQuality;
141140

141+
//transform geometry if required
142+
QgsGeometry* geom;
143+
bool createdGeom = false;
144+
const QgsCoordinateTransform* xform = context.coordinateTransform();
145+
if ( xform )
146+
{
147+
geom = new QgsGeometry( *feature.geometry() );
148+
createdGeom = true;
149+
geom->transform( *xform );
150+
}
151+
else
152+
{
153+
geom = feature.geometry();
154+
}
155+
142156
//convert point to multipoint
143157
QgsMultiPoint multiPoint = convertToMultipoint( geom );
158+
if ( createdGeom )
159+
{
160+
delete geom;
161+
}
162+
geom = 0;
144163

145164
//loop through all points in multipoint
146165
for ( QgsMultiPoint::const_iterator pointIt = multiPoint.constBegin(); pointIt != multiPoint.constEnd(); ++pointIt )

0 commit comments

Comments
 (0)
Please sign in to comment.