Bug report #15319

QgsMapCanvas().zoomToCanvas() not working in script

Added by Alex Eastwood over 4 years ago. Updated over 4 years ago.

Status:Closed
Priority:Normal
Assignee:-
Category:Map Canvas
Affected QGIS version:2.14.3 Regression?:No
Operating System:Windows Easy fix?:No
Pull Request or Patch supplied:No Resolution:
Crashes QGIS or corrupts data:No Copied to github as #:23251

Description

Apologies in advance if it turns out I'm just doing something wrong - I have posted on GIS stackexchange but not had any responses.

the code below works as expected when typed in line-for-line in to the python console, but when I import the function from a script and run it it doesn't zoom to the selected feature. the feature here is a from point-based layer from a PostGres database.

def find_acc(layer, expression, scale = 2500):

    #find_acc("accidents", "\\"Police_ref\\" = '0111XH30035'", 2500)

    lay = core.QgsMapLayerRegistry.instance().mapLayersByName(layer)[0]
    canvas = QgsMapCanvas()

    request = core.QgsFeatureRequest().setFilterExpression(expression)
    iter = lay.getFeatures(request)

     selection = [f for f in iter]

    if len(selection) == 1:
        print "Found accident" 
        accident = selection[0]
     else:
        raise IOError, "More than 1 accident found" 

    lay.setSelectedFeatures([accident.id()])
    # appears to work up until here - feature is highlighted on the map

        canvas.zoomToSelected()

(the formatting above isn't correct but that's not the issue, it's fine in my script)

History

#1 Updated by Alex Eastwood over 4 years ago

  • Status changed from Open to Closed

user error

Also available in: Atom PDF