Die einzige Möglichkeit, die ich in diesem Moment gefunden habe, um ein kleines Skript in Python zu erstellen, könnte möglicherweise in ein Plugin migriert werden, aber ich habe keine Erfahrung damit.
Ist ein wirklich einfacher Code, der den richtigen Komponisten und die richtigen Karten auswählt:
from qgis.core import *
from qgis.utils import *
composerList = iface.activeComposers()
comp = composerList[4]
maps = comp.composition().composerMapItems()
masterMap = maps[0]
slave1 = maps[1]
slave2 = maps[4]
slave1.setNewExtent(masterMap.extent())
slave2.setNewExtent(masterMap.extent())
Eine andere Möglichkeit wäre, den anfänglichen Maßstab in Slave-Karten beizubehalten, um ihn nach dem neuen Umfang festzulegen, wenn Karten unterschiedliche Formen haben, aber in meinem persönlichen Fall war dieser Code ausreichend:
![Geben Sie hier die Bildbeschreibung ein](https://i.stack.imgur.com/ac1PQ.gif)
Ich bin offen für Verbesserungen dieser Lösung (ich habe fast keine Erfahrung mit PyQGIS
).
Umgang mit unterschiedlichen Ausmaßen und Maßstäben
Der obige Code funktioniert hervorragend mit dem gleichen Ausmaß (und folglich der gleichen Form) und dem gleichen Maßstab. Jetzt habe ich einen Code verbessert, der mit verschiedenen Ausmaßen, Formen und Maßstäben getestet wurde:
from qgis.core import *
from qgis.utils import *
composerList = iface.activeComposers()
comp = composerList[0]
maps = comp.composition().composerMapItems()
masterMap = maps[2]
slave1 = maps[1]
slave2 = maps[0]
centroid = masterMap.extent().center()
diffx1 = slave1.extent().xMaximum() - slave1.extent().xMinimum()
diffy1 = slave1.extent().yMaximum() - slave1.extent().yMinimum()
diffx2 = slave2.extent().xMaximum() - slave2.extent().xMinimum()
diffy2 = slave2.extent().yMaximum() - slave2.extent().yMinimum()
newExtent1 = QgsRectangle(centroid[0]-(diffx1/2),centroid[1]-(diffy1/2),centroid[0]+(diffx1/2),centroid[1]+(diffy1/2))
newExtent2 = QgsRectangle(centroid[0]-(diffx2/2),centroid[1]-(diffy2/2),centroid[0]+(diffx2/2),centroid[1]+(diffy2/2))
slave1.setNewExtent(newExtent1)
slave2.setNewExtent(newExtent2)
Und der daraus resultierende Test:
![Geben Sie hier die Bildbeschreibung ein](https://i.stack.imgur.com/O2Vgr.gif)