@masterportal/masterportalapi 2.55.0 → 2.56.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 CHANGED
@@ -4,6 +4,7 @@
4
4
  "browser": true,
5
5
  "node": true,
6
6
  "es6": true,
7
+ "es2020": true,
7
8
  "jest": true
8
9
  },
9
10
  "globals": {
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
 
4
4
  The [Semantic Versioning](https://semver.org/spec/v2.0.0.html) is used.
5
5
 
6
+ ## 2.56.0 - 2026-01-22
7
+
8
+ ### Changed
9
+ - Terrain-Layer: Removed `this`, uses closures instead.
10
+
11
+ ### Fixed
12
+ - VectorStyle:
13
+ - Fixed styling of polygons: `"zig-line-horizontal"` and `"diagonal-right"` are rotated by 90°.
14
+ - Creating legend and capture event ensures working on EventTarget.
15
+
16
+ ---
6
17
 
7
18
  ## 2.55.0 - 2026-01-09
8
19
 
package/License.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2018-2023 Freie und Hansestadt Hamburg, Landesbetrieb Geoinformation und Vermessung
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
- mpapi.terrain.setVisible(true, rawLayerTerrain, window.mpapi.map);
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.55.0",
4
+ "version": "2.56.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: '2025-12-01'
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-01-09'
84
+ releaseDate: '2026-01-22'
85
85
  roadmap: 'https://bitbucket.org/geowerkstatt-hamburg/masterportalapi/src/master/'
86
86
  softwareType: api
87
- softwareVersion: 2.55.0
87
+ softwareVersion: 2.56.0
88
88
  url: 'https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git'
@@ -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 {void}
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
- this.values = {
50
- name: rawLayer.name,
51
- id: rawLayer.id,
52
- typ: rawLayer.typ
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
- return this;
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
+
@@ -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
 
@@ -211,7 +211,7 @@ function captureLegendFromFeature (styleId, legendInformation) {
211
211
  const event = new CustomEvent("legendCaptured");
212
212
 
213
213
  event.id = legend.id;
214
- if (this) {
214
+ if (this instanceof EventTarget && typeof this.dispatchEvent === "function") {
215
215
  this.dispatchEvent(event);
216
216
  }
217
217
  }
@@ -277,14 +277,16 @@ async function returnLegendByStyleId (styleId) {
277
277
  resolve(legend);
278
278
  }
279
279
 
280
- this.addEventListener("legendCaptured", event => {
281
- if (event.id === styleId && event.id !== "default") {
282
- resolve(legendsOfAllStyles.find(element => element.id === event.id));
283
- }
284
- else if (legend && legend.legendInformation.length === legendInformationLength) {
285
- resolve(legendsOfAllStyles.find(element => element.id === event.id));
286
- }
287
- }, false);
280
+ if (this) {
281
+ this.addEventListener("legendCaptured", event => {
282
+ if (event.id === styleId && event.id !== "default") {
283
+ resolve(legendsOfAllStyles.find(element => element.id === event.id));
284
+ }
285
+ else if (legend && legend.legendInformation.length === legendInformationLength) {
286
+ resolve(legendsOfAllStyles.find(element => element.id === event.id));
287
+ }
288
+ }, false);
289
+ }
288
290
  });
289
291
  }
290
292
 
@@ -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 * (Math.PI / 180));
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.`);