10

When I need to zoom to a feature, I have to select it first using layer.select(feature.id()) then I can zoom using mapCanvas.zoomToSelected(layer).

layer = iface.activeLayer()
layer.select(1)
iface.mapCanvas().zoomToSelected(layer)

QgsMapCanvas has only zoomToSelected() method related to a layer. My problem is that I should not change the currently selected features when I want to zoom to another feature.

Is there a way to zoom to a feature without selecting it?

1 Answer 1

7

You can use setExtent to the bounding box of the feature:

layer = iface.activeLayer()

feats = {f.id():f.geometry().boundingBox() for f in layer.getFeatures()}
canvas = iface.mapCanvas()
canvas.setExtent(feats[1])
canvas.refresh()
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.