@masterportal/masterportalapi 2.55.0 → 2.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +1 -0
- package/CHANGELOG.md +18 -0
- package/License.txt +1 -1
- package/example/index.js +4 -3
- package/package.json +1 -1
- package/publiccode.yml +3 -3
- package/src/layer/terrain.js +37 -36
- package/src/maps/olcs/3dUtils/wmsRasterSynchronizer.js +2 -1
- package/src/maps/olcs/olcsMap.js +1 -1
- package/src/vectorStyle/createStyle.js +14 -11
- package/src/vectorStyle/styles/polygon/polygonStyleHatch.js +4 -5
package/.eslintrc
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
|
|
4
4
|
The [Semantic Versioning](https://semver.org/spec/v2.0.0.html) is used.
|
|
5
5
|
|
|
6
|
+
## 2.57.0 - 2026-02-12
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- Issue #1537: The Cesium.WebMapServiceImageryProvider now uses Cesium.WebMercatorTilingScheme for rasterLayers of the type TileWMS. This prevents a bug when using singleTile = false.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 2.56.0 - 2026-01-22
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Terrain-Layer: Removed `this`, uses closures instead.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- VectorStyle:
|
|
20
|
+
- Fixed styling of polygons: `"zig-line-horizontal"` and `"diagonal-right"` are rotated by 90°.
|
|
21
|
+
- Creating legend and capture event ensures working on EventTarget.
|
|
22
|
+
|
|
23
|
+
---
|
|
6
24
|
|
|
7
25
|
## 2.55.0 - 2026-01-09
|
|
8
26
|
|
package/License.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2018-
|
|
3
|
+
Copyright (c) 2018-2026 Freie und Hansestadt Hamburg, Landesbetrieb Geoinformation und Vermessung
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/example/index.js
CHANGED
|
@@ -305,7 +305,8 @@ document.getElementById("enable").addEventListener("click", function () {
|
|
|
305
305
|
document.getElementById("layer-visibility").style.display = "block";
|
|
306
306
|
|
|
307
307
|
load3DScriptModule.load3DScript(lib, function Loaded3DCallback () {
|
|
308
|
-
let tilesetLayer = null
|
|
308
|
+
let tilesetLayer = null,
|
|
309
|
+
terrainLayer = null;
|
|
309
310
|
|
|
310
311
|
const settings3D = {
|
|
311
312
|
map2D: window.mpapi.map2D,
|
|
@@ -335,8 +336,8 @@ document.getElementById("enable").addEventListener("click", function () {
|
|
|
335
336
|
mpapi.entities.createLayer(rawLayerEntities, window.mpapi.map);
|
|
336
337
|
mpapi.entities.setVisible(true, rawLayerEntities, window.mpapi.map);
|
|
337
338
|
|
|
338
|
-
mpapi.terrain.createLayer(rawLayerTerrain, window.mpapi.map);
|
|
339
|
-
|
|
339
|
+
terrainLayer = mpapi.terrain.createLayer(rawLayerTerrain, window.mpapi.map);
|
|
340
|
+
terrainLayer.setVisible(true, rawLayerTerrain, window.mpapi.map);
|
|
340
341
|
|
|
341
342
|
window.mpapi.map.setEnabled(true);
|
|
342
343
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masterportal/masterportalapi",
|
|
3
3
|
"author": "Implementierungspartnerschaft Masterportal <info@masterportal.org> (https://www.masterportal.org)",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.57.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Basic functions of the Masterportal as api",
|
|
7
7
|
"repository": {
|
package/publiccode.yml
CHANGED
|
@@ -75,14 +75,14 @@ maintenance:
|
|
|
75
75
|
affiliation: Freie und Hansestadt Hamburg, Landesbetrieb Geoinformation und Vermessung
|
|
76
76
|
contractors:
|
|
77
77
|
- name: Landesbetrieb Geoinformation und Vermessung
|
|
78
|
-
until: '
|
|
78
|
+
until: '2026-12-01'
|
|
79
79
|
website: 'https://www.hamburg.de/bsw/landesbetrieb-geoinformation-und-vermessung/'
|
|
80
80
|
type: community
|
|
81
81
|
name: Masterportal
|
|
82
82
|
platforms:
|
|
83
83
|
- web
|
|
84
|
-
releaseDate: '2026-
|
|
84
|
+
releaseDate: '2026-02-12'
|
|
85
85
|
roadmap: 'https://bitbucket.org/geowerkstatt-hamburg/masterportalapi/src/master/'
|
|
86
86
|
softwareType: api
|
|
87
|
-
softwareVersion: 2.
|
|
87
|
+
softwareVersion: 2.57.0
|
|
88
88
|
url: 'https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git'
|
package/src/layer/terrain.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @param {Object} rawLayer attributes of the layer
|
|
4
4
|
* @param {string} [rawLayer.url] - the URL of the Cesium terrain server
|
|
5
5
|
* @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html
|
|
6
|
-
* @returns {
|
|
6
|
+
* @returns {Promise<Cesium.CesiumTerrainProvider>} the terrain provider
|
|
7
7
|
*/
|
|
8
8
|
async function createTerrainProvider (rawLayer) {
|
|
9
9
|
const options = {};
|
|
@@ -17,25 +17,6 @@ async function createTerrainProvider (rawLayer) {
|
|
|
17
17
|
return terrainProvider;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* Sets the layers visibility by setting the terrain provider at Cesium scene.
|
|
22
|
-
* @param {boolean} value if true, terrainProvider is set to map and terrain will be visible
|
|
23
|
-
* @param {Object} rawLayer attributes of the layer
|
|
24
|
-
* @param {string} [rawLayer.url] - the URL of the Cesium terrain server
|
|
25
|
-
* @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html
|
|
26
|
-
* @param {OLCesium} map ol cesium map
|
|
27
|
-
* @returns {void}
|
|
28
|
-
*/
|
|
29
|
-
export async function setVisible (value, rawLayer, map) {
|
|
30
|
-
if (map && typeof map.getCesiumScene === "function") {
|
|
31
|
-
if (value) {
|
|
32
|
-
map.getCesiumScene().terrainProvider = await createTerrainProvider(rawLayer);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
map.getCesiumScene().terrainProvider = new Cesium.EllipsoidTerrainProvider({});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
20
|
|
|
40
21
|
/**
|
|
41
22
|
* Creates an terrain layer to use in ol-Cesium map.
|
|
@@ -46,21 +27,41 @@ export async function setVisible (value, rawLayer, map) {
|
|
|
46
27
|
* @returns {Object} layer
|
|
47
28
|
*/
|
|
48
29
|
export function createLayer (rawLayer) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
30
|
+
const layer = {
|
|
31
|
+
values: {
|
|
32
|
+
name: rawLayer.name,
|
|
33
|
+
id: rawLayer.id,
|
|
34
|
+
typ: rawLayer.typ
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Returns the value for the given key of the rawlayer.
|
|
38
|
+
* @param {String} key to get the value for
|
|
39
|
+
* @returns {*} the value to the key
|
|
40
|
+
*/
|
|
41
|
+
get (key) {
|
|
42
|
+
return this.values?.[key];
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Sets the layers visibility by setting the terrain provider at Cesium scene.
|
|
46
|
+
* @param {boolean} value if true, terrainProvider is set to map and terrain will be visible
|
|
47
|
+
* @param {Object} layerAttributes attributes of the layer - the raw layer
|
|
48
|
+
* @param {string} [layerAttributes.url] - the URL of the Cesium terrain server
|
|
49
|
+
* @param {Object} [layerAttributes.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html
|
|
50
|
+
* @param {OLCesium} map ol cesium map
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
async setVisible (value, layerAttributes, map) {
|
|
54
|
+
if (map && typeof map.getCesiumScene === "function") {
|
|
55
|
+
if (value) {
|
|
56
|
+
map.getCesiumScene().terrainProvider = await createTerrainProvider(layerAttributes);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
map.getCesiumScene().terrainProvider = new Cesium.EllipsoidTerrainProvider({});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
53
63
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Returns the value for the given key of the rawlayer.
|
|
58
|
-
* @param {String} key to get the value for
|
|
59
|
-
* @returns {*} the value to the key
|
|
60
|
-
*/
|
|
61
|
-
export function get (key) {
|
|
62
|
-
if (!this.values) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
return this.values[key];
|
|
64
|
+
|
|
65
|
+
return layer;
|
|
66
66
|
}
|
|
67
|
+
|
|
@@ -155,7 +155,8 @@ class WMSRasterSynchronizer extends AbstractSynchronizer {
|
|
|
155
155
|
"url": source.getUrls()[0],
|
|
156
156
|
"parameters": params,
|
|
157
157
|
"layers": params.LAYERS,
|
|
158
|
-
"show": false
|
|
158
|
+
"show": false,
|
|
159
|
+
"tilingScheme": new Cesium.WebMercatorTilingScheme()
|
|
159
160
|
},
|
|
160
161
|
tileGrid = source.getTileGrid();
|
|
161
162
|
|
package/src/maps/olcs/olcsMap.js
CHANGED
|
@@ -26,7 +26,7 @@ export function setCesiumSceneParams (scene, params) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
Object.entries(params).forEach(([key, value]) => {
|
|
29
|
-
if (["0", "1", "2", "heading", "tilt", "altitude"].includes(key)) {
|
|
29
|
+
if (["0", "1", "2", "heading", "tilt", "altitude", "pitch"].includes(key)) {
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -208,11 +208,12 @@ function captureLegendFromFeature (styleId, legendInformation) {
|
|
|
208
208
|
else if (!legend.legendInformation.find(element => element.label === legendInformation[0].label)) {
|
|
209
209
|
legend.legendInformation.push(legendInformation[0]);
|
|
210
210
|
|
|
211
|
-
const event = new CustomEvent("legendCaptured")
|
|
211
|
+
const event = new CustomEvent("legendCaptured"),
|
|
212
|
+
globalObject = this || globalThis;
|
|
212
213
|
|
|
213
214
|
event.id = legend.id;
|
|
214
|
-
if (
|
|
215
|
-
|
|
215
|
+
if (globalObject instanceof EventTarget && typeof globalObject.dispatchEvent === "function") {
|
|
216
|
+
globalObject.dispatchEvent(event);
|
|
216
217
|
}
|
|
217
218
|
}
|
|
218
219
|
}
|
|
@@ -277,14 +278,16 @@ async function returnLegendByStyleId (styleId) {
|
|
|
277
278
|
resolve(legend);
|
|
278
279
|
}
|
|
279
280
|
|
|
280
|
-
this
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
281
|
+
if (this || globalThis) {
|
|
282
|
+
(this || globalThis).addEventListener("legendCaptured", event => {
|
|
283
|
+
if (event.id === styleId && event.id !== "default") {
|
|
284
|
+
resolve(legendsOfAllStyles.find(element => element.id === event.id));
|
|
285
|
+
}
|
|
286
|
+
else if (legend && legend.legendInformation.length === legendInformationLength) {
|
|
287
|
+
resolve(legendsOfAllStyles.find(element => element.id === event.id));
|
|
288
|
+
}
|
|
289
|
+
}, false);
|
|
290
|
+
}
|
|
288
291
|
});
|
|
289
292
|
}
|
|
290
293
|
|
|
@@ -127,7 +127,7 @@ function rotateContextCenter (context, size, degrees = 90) {
|
|
|
127
127
|
const halfSize = 0.5 * size;
|
|
128
128
|
|
|
129
129
|
context.translate(halfSize, halfSize);
|
|
130
|
-
context.rotate(degrees *
|
|
130
|
+
context.rotate(degrees * Math.PI / 180);
|
|
131
131
|
context.translate(-halfSize, -halfSize);
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -146,13 +146,12 @@ export function drawHatch (context, size, pattern) {
|
|
|
146
146
|
if (hatchDefinition) {
|
|
147
147
|
const {draw, rotate} = hatchDefinition;
|
|
148
148
|
|
|
149
|
-
if (draw) {
|
|
150
|
-
draw.forEach(segment => drawSegment(context, size, segment));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
149
|
if (rotate) {
|
|
154
150
|
rotateContextCenter(context, size, rotate);
|
|
155
151
|
}
|
|
152
|
+
if (draw) {
|
|
153
|
+
draw.forEach(segment => drawSegment(context, size, segment));
|
|
154
|
+
}
|
|
156
155
|
}
|
|
157
156
|
else {
|
|
158
157
|
console.error(`polygonStyleHatches: Unknown polygon style "${pattern}". Skipping hatching.`);
|