Skip to content

Commit 419e53b

Browse files
committed
Fix map view synchronization with different CRS
1 parent 560e9c2 commit 419e53b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/app/qgsmapcanvasdockwidget.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
***************************************************************************/
1515
#include "qgsmapcanvasdockwidget.h"
1616
#include "qgsmapcanvas.h"
17+
#include "qgscsexception.h"
1718
#include "qgsprojectionselectiondialog.h"
1819
#include "qgsscalecombobox.h"
1920
#include "qgsstatusbarmagnifierwidget.h"
@@ -194,7 +195,18 @@ void QgsMapCanvasDockWidget::mapExtentChanged()
194195
syncView( false );
195196

196197
QgsMapCanvas *destCanvas = sourceCanvas == mMapCanvas ? mMainCanvas : mMapCanvas;
197-
destCanvas->setExtent( sourceCanvas->extent() );
198+
199+
// reproject extent
200+
QgsCoordinateTransform ct( sourceCanvas->mapSettings().destinationCrs(),
201+
destCanvas->mapSettings().destinationCrs() );
202+
try
203+
{
204+
destCanvas->setExtent( ct.transformBoundingBox( sourceCanvas->extent() ) );
205+
}
206+
catch ( QgsCsException & )
207+
{
208+
destCanvas->setExtent( sourceCanvas->extent() );
209+
}
198210
destCanvas->refresh();
199211

200212
syncView( true );

0 commit comments

Comments
 (0)