Checking zoom and tiles boundaries (#6)
This commit is contained in:
1 parent
ac67a063c2
commit
f5ce103cb3
2 files changed
+29
-10
No files matched your search
+13
-2
@@ -1,5 +1,6 @@
|
||||
import { createSlice } from '@reduxjs/toolkit';
|
||||
import _ from 'lodash';
|
||||
import { tileProviders } from '../components/map/tile';
|
||||
import { tileSize } from '../components/map/tiled-map';
|
||||
import {
|
||||
geoPoint,
|
||||
@@ -121,6 +122,13 @@ const evaluateWhiteboardViewBox = (
|
||||
export const evaluateStateFromScope = (state: MapState) => {
|
||||
console.log('<<<<<<<<<<<< evaluateStateFromScope');
|
||||
state.tiles.zoom = _.round(state.scope.zoom);
|
||||
if (state.tiles.zoom < tileProviders[state.scope.tileProvider].minZoom) {
|
||||
state.tiles.zoom = tileProviders[state.scope.tileProvider].minZoom;
|
||||
}
|
||||
if (state.tiles.zoom > tileProviders[state.scope.tileProvider].maxZoom) {
|
||||
state.tiles.zoom = tileProviders[state.scope.tileProvider].maxZoom;
|
||||
}
|
||||
|
||||
const softZoom = state.scope.zoom - state.tiles.zoom;
|
||||
|
||||
state.slippy.scale = 2 ** softZoom;
|
||||
@@ -186,8 +194,11 @@ export const reevaluateState = (state: MapState) => {
|
||||
(state.tiles.nb.x - 1) * visibleTileSize - window.innerWidth ||
|
||||
-state.slippy.translation.y >
|
||||
(state.tiles.nb.y - 1) * visibleTileSize - window.innerHeight ||
|
||||
state.slippy.scale > Math.SQRT2 ||
|
||||
state.slippy.scale < Math.SQRT1_2
|
||||
(state.slippy.scale > Math.SQRT2 &&
|
||||
state.tiles.zoom + 1 <=
|
||||
tileProviders[state.scope.tileProvider].maxZoom) ||
|
||||
(state.slippy.scale < Math.SQRT1_2 &&
|
||||
state.tiles.zoom - 1 >= tileProviders[state.scope.tileProvider].minZoom)
|
||||
) {
|
||||
evaluateStateFromScope(state);
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user