@@ -153,7 +153,7 @@ void QgsRubberBand::movePoint( int index, const QgsPoint& p, int geometryIndex )
153
153
update ();
154
154
}
155
155
156
- void QgsRubberBand::setToGeometry ( QgsGeometry* geom, QgsVectorLayer& layer )
156
+ void QgsRubberBand::setToGeometry ( QgsGeometry* geom, QgsVectorLayer* layer )
157
157
{
158
158
if ( !geom )
159
159
{
@@ -177,7 +177,15 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
177
177
{
178
178
mIsPolygon = true ;
179
179
double d = mMapCanvas ->extent ().width () * 0.005 ;
180
- QgsPoint pt = mr->layerToMapCoordinates ( &layer, geom->asPoint () );
180
+ QgsPoint pt;
181
+ if (layer)
182
+ {
183
+ pt = mr->layerToMapCoordinates ( layer, geom->asPoint () );
184
+ }
185
+ else
186
+ {
187
+ pt = geom->asPoint ();
188
+ }
181
189
addPoint ( QgsPoint ( pt.x () - d, pt.y () - d ) );
182
190
addPoint ( QgsPoint ( pt.x () + d, pt.y () - d ) );
183
191
addPoint ( QgsPoint ( pt.x () + d, pt.y () + d ) );
@@ -194,10 +202,20 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
194
202
for ( int i = 0 ; i < mpt.size (); ++i )
195
203
{
196
204
QgsPoint pt = mpt[i];
197
- addPoint ( mr->layerToMapCoordinates ( &layer, QgsPoint ( pt.x () - d, pt.y () - d ) ) );
198
- addPoint ( mr->layerToMapCoordinates ( &layer, QgsPoint ( pt.x () + d, pt.y () - d ) ) );
199
- addPoint ( mr->layerToMapCoordinates ( &layer, QgsPoint ( pt.x () + d, pt.y () + d ) ) );
200
- addPoint ( mr->layerToMapCoordinates ( &layer, QgsPoint ( pt.x () - d, pt.y () + d ) ) );
205
+ if (layer)
206
+ {
207
+ addPoint ( mr->layerToMapCoordinates ( layer, QgsPoint ( pt.x () - d, pt.y () - d ) ) );
208
+ addPoint ( mr->layerToMapCoordinates ( layer, QgsPoint ( pt.x () + d, pt.y () - d ) ) );
209
+ addPoint ( mr->layerToMapCoordinates ( layer, QgsPoint ( pt.x () + d, pt.y () + d ) ) );
210
+ addPoint ( mr->layerToMapCoordinates ( layer, QgsPoint ( pt.x () - d, pt.y () + d ) ) );
211
+ }
212
+ else
213
+ {
214
+ addPoint (QgsPoint ( pt.x () - d, pt.y () - d ) );
215
+ addPoint (QgsPoint ( pt.x () + d, pt.y () - d ) );
216
+ addPoint (QgsPoint ( pt.x () + d, pt.y () + d ) );
217
+ addPoint (QgsPoint ( pt.x () - d, pt.y () + d ) );
218
+ }
201
219
}
202
220
}
203
221
break ;
@@ -209,7 +227,14 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
209
227
QgsPolyline line = geom->asPolyline ();
210
228
for ( int i = 0 ; i < line.count (); i++ )
211
229
{
212
- addPoint ( mr->layerToMapCoordinates ( &layer, line[i] ) );
230
+ if (layer)
231
+ {
232
+ addPoint ( mr->layerToMapCoordinates ( layer, line[i] ) );
233
+ }
234
+ else
235
+ {
236
+ addPoint (line[i]);
237
+ }
213
238
}
214
239
}
215
240
break ;
@@ -228,7 +253,14 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
228
253
QgsPolyline line = mline[i];
229
254
for ( int j = 0 ; j < line.size (); ++j )
230
255
{
231
- addPoint ( mr->layerToMapCoordinates ( &layer, line[j] ), false , i );
256
+ if (layer)
257
+ {
258
+ addPoint ( mr->layerToMapCoordinates ( layer, line[j] ), false , i );
259
+ }
260
+ else
261
+ {
262
+ addPoint (line[j]);
263
+ }
232
264
}
233
265
}
234
266
}
@@ -242,7 +274,14 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
242
274
QgsPolyline line = poly[0 ];
243
275
for ( int i = 0 ; i < line.count (); i++ )
244
276
{
245
- addPoint ( mr->layerToMapCoordinates ( &layer, line[i] ) );
277
+ if (layer)
278
+ {
279
+ addPoint ( mr->layerToMapCoordinates ( layer, line[i] ) );
280
+ }
281
+ else
282
+ {
283
+ addPoint (line[i]);
284
+ }
246
285
}
247
286
}
248
287
break ;
@@ -262,7 +301,14 @@ void QgsRubberBand::setToGeometry( QgsGeometry* geom, QgsVectorLayer& layer )
262
301
QgsPolyline line = poly[0 ];
263
302
for ( int j = 0 ; j < line.count (); ++j )
264
303
{
265
- addPoint ( mr->layerToMapCoordinates ( &layer, line[j] ), false , i );
304
+ if (layer)
305
+ {
306
+ addPoint ( mr->layerToMapCoordinates ( layer, line[j] ), false , i );
307
+ }
308
+ else
309
+ {
310
+ addPoint (line[j]);
311
+ }
266
312
}
267
313
}
268
314
}
0 commit comments