diff --git a/packages/base/src/mainview/mainView.tsx b/packages/base/src/mainview/mainView.tsx index 8b0a1ece8..659ced236 100644 --- a/packages/base/src/mainview/mainView.tsx +++ b/packages/base/src/mainview/mainView.tsx @@ -357,7 +357,8 @@ export class MainView extends React.Component { const center = view.getCenter() || [0, 0]; const zoom = view.getZoom() || 0; - const projection = view.getProjection(); + const projection = + getProjection(currentOptions.projection) ?? view.getProjection(); const latLng = toLonLat(center, projection); const bearing = view.getRotation(); const resolution = view.getResolution(); @@ -413,12 +414,16 @@ export class MainView extends React.Component { this._contextMenu.open(event); }); + const projection = + getProjection(this._model.getOptions().projection) ?? + view.getProjection(); + this.setState(old => ({ ...old, loading: false, viewProjection: { - code: view.getProjection().getCode(), - units: view.getProjection().getUnits(), + code: projection.getCode(), + units: projection.getUnits(), }, })); } @@ -1711,6 +1716,13 @@ export class MainView extends React.Component { if (projection !== undefined && currentProjection !== projection) { const newProjection = getProjection(projection); if (newProjection) { + this.setState(old => ({ + viewProjection: { + ...old.viewProjection, + code: newProjection.getCode(), + units: newProjection.getUnits(), + }, + })); view = new View({ projection: newProjection }); } else { console.warn(`Invalid projection: ${projection}`); @@ -1718,6 +1730,9 @@ export class MainView extends React.Component { } } + view.setRotation(bearing || 0); + this._Map.setView(view); + // Use the extent only if explicitly requested (QGIS files). if (useExtent && extent) { view.fit(extent); @@ -1735,10 +1750,6 @@ export class MainView extends React.Component { this._model.setOptions(options); } } - - view.setRotation(bearing || 0); - - this._Map.setView(view); } private _onViewChanged(