qwc2
Version:
QGIS Web Client
182 lines (181 loc) • 8.67 kB
JavaScript
var _excluded = ["type"];
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
/**
* Copyright 2015 GeoSolutions Sas
* Copyright 2016-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
import { CHANGE_MAP_VIEW, CONFIGURE_MAP, CHANGE_ZOOM_LVL, ZOOM_TO_EXTENT, ZOOM_TO_POINT, PAN_TO, CHANGE_ROTATION, CLICK_ON_MAP, TOGGLE_MAPTIPS, SET_DISPLAY_CRS, SET_SNAPPING_CONFIG } from '../actions/map';
import CoordinatesUtils from '../utils/CoordinatesUtils';
import MapUtils from '../utils/MapUtils';
var defaultState = {
bbox: {
bounds: [0, 0, 0, 0],
rotation: 0
},
center: [0, 0],
dpi: MapUtils.DEFAULT_SCREEN_DPI,
projection: "EPSG:3857",
displayCrs: "EPSG:3857",
zoom: 0,
scales: [0],
resolutions: [0],
click: null,
size: null,
snapping: {
enabled: false,
active: false
}
};
export default function map() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
var action = arguments.length > 1 ? arguments[1] : undefined;
// Always reset mapStateSource, CHANGE_MAP_VIEW will set it if necessary
if (state.mapStateSource) {
state = _objectSpread(_objectSpread({}, state), {}, {
mapStateSource: null
});
}
switch (action.type) {
case CHANGE_MAP_VIEW:
{
// eslint-disable-next-line
var type = action.type,
params = _objectWithoutProperties(action, _excluded);
var newState = _objectSpread(_objectSpread({}, state), params);
MapUtils.updateMapUrlParams(newState);
return newState;
}
case CONFIGURE_MAP:
{
var _action$defaultdispla;
var resolutions = MapUtils.getResolutionsForScales(action.scales, action.crs, state.dpi);
var bounds;
var center;
var zoom;
if (action.view.center) {
center = CoordinatesUtils.reproject(action.view.center, action.view.crs || action.crs, action.crs);
zoom = action.view.zoom;
bounds = MapUtils.getExtentForCenterAndZoom(center, zoom, resolutions, state.size);
} else {
bounds = CoordinatesUtils.reprojectBbox(action.view.bounds, action.view.crs || state.projection, action.crs);
center = [0.5 * (bounds[0] + bounds[2]), 0.5 * (bounds[1] + bounds[3])];
zoom = MapUtils.getZoomForExtent(bounds, resolutions, state.size, 0, action.scales.length - 1);
}
return _objectSpread(_objectSpread({}, state), {}, {
bbox: _objectSpread(_objectSpread({}, state.bbox), {}, {
bounds: bounds
}),
center: center,
zoom: zoom,
projection: action.crs,
displayCrs: (_action$defaultdispla = action.defaultdisplaycrs) !== null && _action$defaultdispla !== void 0 ? _action$defaultdispla : action.crs,
scales: action.scales,
resolutions: resolutions
});
}
case CHANGE_ZOOM_LVL:
{
return _objectSpread(_objectSpread({}, state), {}, {
zoom: action.zoom
});
}
case ZOOM_TO_EXTENT:
{
// Ugh...
var topbarHeight = parseFloat(document.querySelector(':root').style.getPropertyValue('--topbar-height').replace(/px$/, ''));
var bottombarHeight = parseFloat(document.querySelector(':root').style.getPropertyValue('--bottombar-height').replace(/px$/, ''));
var _bounds = CoordinatesUtils.reprojectBbox(action.extent, action.crs || state.projection, state.projection);
var padding = (topbarHeight + bottombarHeight) / state.size.height;
var width = _bounds[2] - _bounds[0];
var height = _bounds[3] - _bounds[1];
_bounds[0] -= padding * width;
_bounds[2] += padding * width;
_bounds[1] -= padding * height;
_bounds[3] += padding * height;
var _newState = _objectSpread(_objectSpread({}, state), {}, {
center: [0.5 * (_bounds[0] + _bounds[2]), 0.5 * (_bounds[1] + _bounds[3])],
zoom: MapUtils.getZoomForExtent(_bounds, state.resolutions, state.size, 0, state.scales.length - 1) + action.zoomOffset,
bbox: _objectSpread(_objectSpread({}, state.bbox), {}, {
bounds: _bounds
})
});
MapUtils.updateMapUrlParams(_newState);
return _newState;
}
case ZOOM_TO_POINT:
{
var _action$rotation;
var _newState2 = _objectSpread(_objectSpread({}, state), {}, {
center: CoordinatesUtils.reproject(action.pos, action.crs || state.projection, state.projection),
zoom: action.zoom,
bbox: _objectSpread(_objectSpread({}, state.bbox), {}, {
rotation: (_action$rotation = action.rotation) !== null && _action$rotation !== void 0 ? _action$rotation : state.bbox.rotation
})
});
MapUtils.updateMapUrlParams(_newState2);
return _newState2;
}
case PAN_TO:
{
var _action$rotation2;
var _newState3 = _objectSpread(_objectSpread({}, state), {}, {
center: CoordinatesUtils.reproject(action.pos, action.crs || state.projection, state.projection),
bbox: _objectSpread(_objectSpread({}, state.bbox), {}, {
rotation: (_action$rotation2 = action.rotation) !== null && _action$rotation2 !== void 0 ? _action$rotation2 : state.bbox.rotation
})
});
MapUtils.updateMapUrlParams(_newState3);
return _newState3;
}
case CHANGE_ROTATION:
{
var _newState4 = _objectSpread(_objectSpread({}, state), {}, {
bbox: _objectSpread(_objectSpread({}, state.bbox), {}, {
rotation: action.rotation
})
});
MapUtils.updateMapUrlParams(_newState4);
return _newState4;
}
case CLICK_ON_MAP:
{
return _objectSpread(_objectSpread({}, state), {}, {
click: action.click
});
}
case TOGGLE_MAPTIPS:
{
return _objectSpread(_objectSpread({}, state), {}, {
maptips: action.active
});
}
case SET_SNAPPING_CONFIG:
{
return _objectSpread(_objectSpread({}, state), {}, {
snapping: {
enabled: action.enabled,
active: action.active
}
});
}
case SET_DISPLAY_CRS:
{
return _objectSpread(_objectSpread({}, state), {}, {
displayCrs: action.displayCrs
});
}
default:
return state;
}
}