@masterportal/masterportalapi 2.23.0 → 2.25.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/CHANGELOG.md +57 -6
- package/example/config/portal.json +7 -1
- package/example/config/services.json +10 -0
- package/example/index.js +1 -1
- package/jest.config.js +3 -0
- package/package.json +66 -65
- package/src/index.js +0 -2
- package/src/layer/geojson/index.js +7 -5
- package/src/layer/oaf.js +3 -2
- package/src/layer/terrain.js +8 -6
- package/src/layer/tileset.js +14 -5
- package/src/layer/vectorBase.js +2 -2
- package/src/layer/vectorTile.js +32 -8
- package/src/layer/wfs.js +4 -3
- package/src/layer/wmts.js +4 -2
- package/src/maps/interactions/drawInteraction.js +27 -3
- package/src/maps/ol/olMap.js +0 -2
- package/src/maps/olcs/3dUtils/wmsRasterSynchronizer.js +2 -2
- package/src/maps/olcs/olcsMap.js +2 -2
- package/src/renderer/webgl.js +140 -23
- package/src/vectorStyle/styleList.js +8 -24
- package/test/layer/geojson/index.test.js +19 -5
- package/test/layer/oaf.test.js +21 -6
- package/test/layer/terrain.test.js +4 -2
- package/test/layer/tileset.test.js +10 -5
- package/test/layer/vectorTile.test.js +23 -4
- package/test/layer/wfs.test.js +20 -5
- package/test/maps/interactions/drawInteraction.test.js +34 -0
- package/test/renderer/webgl.test.js +76 -9
- package/test/layer/vectorBase.test.js +0 -83
package/CHANGELOG.md
CHANGED
|
@@ -3,10 +3,57 @@
|
|
|
3
3
|
|
|
4
4
|
The [Semantic Versioning](https://semver.org/spec/v2.0.0.html) is used.
|
|
5
5
|
|
|
6
|
+
### Unreleased - in development
|
|
7
|
+
## Added
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- WebGL: method "afterLoading" catches MultiPoint geometries and parses them to a single point feature for proper rendering
|
|
11
|
+
- WebGL Render-Pipeline for VectorLayer of type VectorTile can be called using {"renderer": "webgl"} in config.json.
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
- The styleList is now loading asynchronus
|
|
15
|
+
|
|
16
|
+
## Deprecated
|
|
17
|
+
|
|
18
|
+
## Removed
|
|
19
|
+
|
|
20
|
+
## Fixed
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2.24.0 - 2023-08-03
|
|
25
|
+
### Added
|
|
26
|
+
- The following packages have been installed:
|
|
27
|
+
- @swc/jest: 0.2.27
|
|
28
|
+
- Add a function to convertUnits in drawInteractions.
|
|
29
|
+
- Remove VectorBase layer and add it to masterportal.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- The following packages have been updated:
|
|
33
|
+
- dependencies:
|
|
34
|
+
- core-js: 3.30.2 to 3.32.0
|
|
35
|
+
- dayjs: 1.11.7 to 1.11.9
|
|
36
|
+
- olcs: 2.14.0 to 2.15.0
|
|
37
|
+
- xml2js: 0.5.0 to 0.6.2
|
|
38
|
+
- devDependencies:
|
|
39
|
+
- @babel/core: 7.21.8 to 7.22.9
|
|
40
|
+
- @babel/plugin-transform-modules-commonjs: 7.21.5 to 7.21.5
|
|
41
|
+
- @parcel/transformer-sass: 2.8.3 to 2.9.3
|
|
42
|
+
- buffer: 5.7.1 to 6.0.3
|
|
43
|
+
- eslint: 8.40.0 to 8.46.0
|
|
44
|
+
- jest: 29.5.0 to 29.6.2
|
|
45
|
+
- jest-canvas-mock: 2.5.0 to 2.5.2
|
|
46
|
+
- jest-environment-jsdom: 29.5.0 to 29.6.2
|
|
47
|
+
- parcel: 2.8.3 to 2.9.3
|
|
48
|
+
- sass: 1.62.1 to 1.64.2
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
- Changed peerDependency from cesium 1.106.0 to @cesium/engine 2.4.1.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
6
55
|
## 2.23.0 - 2023-08-02
|
|
7
56
|
### Added
|
|
8
|
-
- VectorStyle: Add Styling rules for Geoemtries of type `Circle`.
|
|
9
|
-
- Add Styling and zIndex to draw interactions and improve the draw behavior.
|
|
10
57
|
- Add select and modify interactions for editing ol features.
|
|
11
58
|
|
|
12
59
|
### Fixed
|
|
@@ -15,8 +62,15 @@
|
|
|
15
62
|
---
|
|
16
63
|
|
|
17
64
|
## 2.22.0 - 2023-07-25
|
|
65
|
+
### Changed
|
|
66
|
+
- Replace derprecated cesium tileset and terrain loading functions.
|
|
67
|
+
- WFST Refactoring
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 2.21.0 - 2023-07-21
|
|
18
72
|
### Added
|
|
19
|
-
- VectorStyle: Add Styling rules for
|
|
73
|
+
- VectorStyle: Add Styling rules for Geometries of type `Circle`.
|
|
20
74
|
- Add Styling and zIndex to draw interactions and improve the draw behavior.
|
|
21
75
|
|
|
22
76
|
### Changed
|
|
@@ -24,9 +78,6 @@
|
|
|
24
78
|
- WFS:
|
|
25
79
|
- Migrated writeTransaction and sendTransaction from masterportal the masterportalAPI.
|
|
26
80
|
- Exports in src/layer/wfs.js changed to export default {} to provide ES-Syntax.
|
|
27
|
-
### Deprecated
|
|
28
|
-
|
|
29
|
-
### Removed
|
|
30
81
|
|
|
31
82
|
### Fixed
|
|
32
83
|
- WFS: fixed a bug that prevented parsing GeoServer responses.
|
|
@@ -45,6 +45,12 @@
|
|
|
45
45
|
"styleId": "1534",
|
|
46
46
|
"typ": "WFS"
|
|
47
47
|
},
|
|
48
|
+
{
|
|
49
|
+
"id": "5097",
|
|
50
|
+
"renderer": "webgl",
|
|
51
|
+
"isPointLayer": true,
|
|
52
|
+
"typ": "WFS"
|
|
53
|
+
},
|
|
48
54
|
{
|
|
49
55
|
"id": "2003",
|
|
50
56
|
"renderer": "webgl",
|
|
@@ -77,6 +83,6 @@
|
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
85
|
],
|
|
80
|
-
"cesiumLib":"https://geoportal-hamburg.de/mastercode/cesium/
|
|
86
|
+
"cesiumLib":"https://geoportal-hamburg.de/mastercode/cesium/latest/Cesium.js",
|
|
81
87
|
"wfsImgPath": "https://geodienste.hamburg.de/lgv-config/img/"
|
|
82
88
|
}
|
|
@@ -133,6 +133,16 @@
|
|
|
133
133
|
"version" : "1.1.0",
|
|
134
134
|
"featureNS" : "https://registry.gdi-de.org/id/de.hh.up"
|
|
135
135
|
},
|
|
136
|
+
{
|
|
137
|
+
"id" : "5097",
|
|
138
|
+
"name" : "de.hh.up:strassenbaumkataster hpa",
|
|
139
|
+
"url" : "https://geodienste.hamburg.de/HH_WFS_Strassenbaumkataster",
|
|
140
|
+
"typ" : "WFS",
|
|
141
|
+
"featureType" : "strassenbaumkataster_hpa",
|
|
142
|
+
"outputFormat" : "XML",
|
|
143
|
+
"version" : "1.1.0",
|
|
144
|
+
"featureNS" : "https://registry.gdi-de.org/id/de.hh.up"
|
|
145
|
+
},
|
|
136
146
|
{
|
|
137
147
|
"id": "6001",
|
|
138
148
|
"name": "ArcGIS VectorTile",
|
package/example/index.js
CHANGED
|
@@ -249,7 +249,7 @@ document.getElementById("enable").addEventListener("click", function () {
|
|
|
249
249
|
document.getElementById("layer-visibility").style.display = "none";
|
|
250
250
|
}
|
|
251
251
|
else {
|
|
252
|
-
const lib = portalConfig.cesiumLib ? portalConfig.cesiumLib : "https://geoportal-hamburg.de/mastercode/cesium/
|
|
252
|
+
const lib = portalConfig.cesiumLib ? portalConfig.cesiumLib : "https://geoportal-hamburg.de/mastercode/cesium/latest/index.js";
|
|
253
253
|
|
|
254
254
|
document.getElementById("layer-visibility").style.display = "block";
|
|
255
255
|
|
package/jest.config.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/* eslint-env node */
|
|
2
2
|
module.exports = {
|
|
3
|
+
"transform": {
|
|
4
|
+
"^.+\\.(t|j)sx?$": "@swc/jest"
|
|
5
|
+
},
|
|
3
6
|
/** ol prints errors without HTMLCanvasElement being available in test environment */
|
|
4
7
|
"setupFiles": ["jest-canvas-mock"],
|
|
5
8
|
/** node_modules are usually ignored by babel-jest, but ol is published in ES6 */
|
package/package.json
CHANGED
|
@@ -1,65 +1,66 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@masterportal/masterportalapi",
|
|
3
|
-
"author": "Implementierungspartnerschaft Masterportal <info@masterportal.org> (https://www.masterportal.org)",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"description": "Basic functions of the Masterportal as api",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git"
|
|
10
|
-
},
|
|
11
|
-
"main": "src/index.js",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"test": "jest .test.js --config ./jest.config.js --collectCoverage",
|
|
14
|
-
"test:trace": "node --trace-warnings node_modules/jest/bin/jest.js .test.js --config ./jest.config.js",
|
|
15
|
-
"test:watch": "jest .test.js --config ./jest.config.js --watch",
|
|
16
|
-
"example": "parcel example/index.html",
|
|
17
|
-
"generate-jsdoc": "jsdoc ./src -r -d ./docs/ -R ./README.md -c jsdoc.json",
|
|
18
|
-
"prePushHook": "eslint --max-warnings 0 \"./**/*.js\" && npm run test",
|
|
19
|
-
"prepare": "husky install"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"core-js": "^3.
|
|
23
|
-
"dayjs": "^1.11.
|
|
24
|
-
"ol": "7.4.0",
|
|
25
|
-
"olcs": "^2.
|
|
26
|
-
"proj4": "^2.9.0",
|
|
27
|
-
"xml2js": "^0.
|
|
28
|
-
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@babel/core": "^7.
|
|
31
|
-
"@babel/plugin-transform-modules-commonjs": "^7.
|
|
32
|
-
"@parcel/transformer-sass": "^2.
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"jest
|
|
40
|
-
"jest-
|
|
41
|
-
"jest-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@masterportal/masterportalapi",
|
|
3
|
+
"author": "Implementierungspartnerschaft Masterportal <info@masterportal.org> (https://www.masterportal.org)",
|
|
4
|
+
"version": "2.25.0",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "Basic functions of the Masterportal as api",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git"
|
|
10
|
+
},
|
|
11
|
+
"main": "src/index.js",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"test": "jest .test.js --config ./jest.config.js --collectCoverage",
|
|
14
|
+
"test:trace": "node --trace-warnings node_modules/jest/bin/jest.js .test.js --config ./jest.config.js",
|
|
15
|
+
"test:watch": "jest .test.js --config ./jest.config.js --watch",
|
|
16
|
+
"example": "parcel example/index.html",
|
|
17
|
+
"generate-jsdoc": "jsdoc ./src -r -d ./docs/ -R ./README.md -c jsdoc.json",
|
|
18
|
+
"prePushHook": "eslint --max-warnings 0 \"./**/*.js\" && npm run test",
|
|
19
|
+
"prepare": "husky install"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"core-js": "^3.32.0",
|
|
23
|
+
"dayjs": "^1.11.9",
|
|
24
|
+
"ol": "7.4.0",
|
|
25
|
+
"olcs": "^2.15.0",
|
|
26
|
+
"proj4": "^2.9.0",
|
|
27
|
+
"xml2js": "^0.6.2"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@babel/core": "^7.22.9",
|
|
31
|
+
"@babel/plugin-transform-modules-commonjs": "^7.22.5",
|
|
32
|
+
"@parcel/transformer-sass": "^2.9.3",
|
|
33
|
+
"@swc/jest": "^0.2.27",
|
|
34
|
+
"buffer": "^6.0.3",
|
|
35
|
+
"canvas": "^2.11.2",
|
|
36
|
+
"eslint": "^8.46.0",
|
|
37
|
+
"events": "^3.3.0",
|
|
38
|
+
"husky": "^8.0.3",
|
|
39
|
+
"jest": "^29.6.2",
|
|
40
|
+
"jest-canvas-mock": "^2.5.2",
|
|
41
|
+
"jest-environment-jsdom": "^29.6.2",
|
|
42
|
+
"jest-fetch-mock": "^3.0.3",
|
|
43
|
+
"jsdoc": "^4.0.2",
|
|
44
|
+
"parcel": "^2.9.3",
|
|
45
|
+
"process": "^0.11.10",
|
|
46
|
+
"sass": "^1.64.2",
|
|
47
|
+
"stream-browserify": "^3.0.0",
|
|
48
|
+
"timers-browserify": "^2.0.12",
|
|
49
|
+
"use-resize-observer": "^9.1.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@cesium/engine": "^2.4.1"
|
|
53
|
+
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": "^16.13.2 || ^18.12.0",
|
|
56
|
+
"npm": "^8.1.2 || ^9.3.1"
|
|
57
|
+
},
|
|
58
|
+
"homepage": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi#readme",
|
|
59
|
+
"directories": {
|
|
60
|
+
"example": "example",
|
|
61
|
+
"test": "test"
|
|
62
|
+
},
|
|
63
|
+
"bugs": {
|
|
64
|
+
"url": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi/issues"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/index.js
CHANGED
|
@@ -5,7 +5,6 @@ import * as wms from "./layer/wms";
|
|
|
5
5
|
import wmts from "./layer/wmts";
|
|
6
6
|
import wfs from "./layer/wfs";
|
|
7
7
|
import * as geojson from "./layer/geojson";
|
|
8
|
-
import * as vectorBase from "./layer/vectorBase";
|
|
9
8
|
import * as vectorTile from "./layer/vectorTile";
|
|
10
9
|
import * as oaf from "./layer/oaf";
|
|
11
10
|
import * as terrain from "./layer/terrain";
|
|
@@ -24,7 +23,6 @@ export {
|
|
|
24
23
|
wfs,
|
|
25
24
|
geojson,
|
|
26
25
|
layerLib,
|
|
27
|
-
vectorBase,
|
|
28
26
|
vectorTile,
|
|
29
27
|
oaf,
|
|
30
28
|
terrain,
|
|
@@ -23,10 +23,11 @@ export {setCustomStyles};
|
|
|
23
23
|
* @param {"default" | "webgl" | undefined} [rawLayer.renderer] - use default canvas or webgl renderer
|
|
24
24
|
* @param {string} [rawLayer.styleId] - the styleId of the layer, only necessary for webgl style pipeline
|
|
25
25
|
* @param {string[]} [rawLayer.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl
|
|
26
|
+
* @param {string[]} [rawLayer.isPointLayer] - whether the layer consists merely of points (or multi points)
|
|
26
27
|
* @param {object} options - options of the geojson layer
|
|
27
28
|
* @returns {ol.source.Vector} created VectorSource
|
|
28
29
|
*/
|
|
29
|
-
export function createLayerSource ({url, features, clusterDistance, renderer, styleId, excludeTypesFromParsing}, options) {
|
|
30
|
+
export function createLayerSource ({url, features, clusterDistance, renderer, styleId, excludeTypesFromParsing, isPointLayer}, options) {
|
|
30
31
|
const format = new GeoJSON();
|
|
31
32
|
let source = null;
|
|
32
33
|
|
|
@@ -46,11 +47,11 @@ export function createLayerSource ({url, features, clusterDistance, renderer, st
|
|
|
46
47
|
if (renderer === "webgl") {
|
|
47
48
|
// if features were provided before source creation
|
|
48
49
|
if (features?.length > 0) {
|
|
49
|
-
webgl.afterLoading(source.getFeatures(), styleId, excludeTypesFromParsing);
|
|
50
|
+
webgl.afterLoading(source.getFeatures(), styleId, excludeTypesFromParsing, isPointLayer);
|
|
50
51
|
}
|
|
51
52
|
// wait for loading
|
|
52
53
|
source.once("featuresloadend", event => {
|
|
53
|
-
webgl.afterLoading(event?.features, styleId, excludeTypesFromParsing);
|
|
54
|
+
webgl.afterLoading(event?.features, styleId, excludeTypesFromParsing, isPointLayer);
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
|
|
@@ -75,7 +76,8 @@ export function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {
|
|
|
75
76
|
...rawLayer,
|
|
76
77
|
renderer: layerParams.renderer,
|
|
77
78
|
styleId: layerParams.styleId,
|
|
78
|
-
excludeTypesFromParsing: layerParams.excludeTypesFromParsing
|
|
79
|
+
excludeTypesFromParsing: layerParams.excludeTypesFromParsing,
|
|
80
|
+
isPointLayer: layerParams.isPointLayer
|
|
79
81
|
}, options);
|
|
80
82
|
layer = webgl.createLayer({
|
|
81
83
|
...rawLayer,
|
|
@@ -118,7 +120,7 @@ export function updateSource (layer) {
|
|
|
118
120
|
// perform necessary feature operations if renderer is webgl
|
|
119
121
|
if (layer.get("renderer") === "webgl") {
|
|
120
122
|
layer.getSource().once("featuresloadend", event => {
|
|
121
|
-
webgl.afterLoading(event?.features, layer.get("styleId"), layer.get("excludeTypesFromParsing"));
|
|
123
|
+
webgl.afterLoading(event?.features, layer.get("styleId"), layer.get("excludeTypesFromParsing"), layer.get("isPointLayer"));
|
|
122
124
|
});
|
|
123
125
|
}
|
|
124
126
|
}
|
package/src/layer/oaf.js
CHANGED
|
@@ -188,7 +188,7 @@ export function createLayerSource (rawLayer, options = {}) {
|
|
|
188
188
|
|
|
189
189
|
if (rawLayer.renderer === "webgl") {
|
|
190
190
|
source.once("featuresloadend", event => {
|
|
191
|
-
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing);
|
|
191
|
+
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -212,7 +212,8 @@ export function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {
|
|
|
212
212
|
...rawLayer,
|
|
213
213
|
renderer: layerParams.renderer,
|
|
214
214
|
styleId: layerParams.styleId,
|
|
215
|
-
excludeTypesFromParsing: layerParams.excludeTypesFromParsing
|
|
215
|
+
excludeTypesFromParsing: layerParams.excludeTypesFromParsing,
|
|
216
|
+
isPointLayer: layerParams.isPointLayer
|
|
216
217
|
}, options);
|
|
217
218
|
layer = webgl.createLayer({
|
|
218
219
|
...rawLayer,
|
package/src/layer/terrain.js
CHANGED
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html
|
|
6
6
|
* @returns {void}
|
|
7
7
|
*/
|
|
8
|
-
function createTerrainProvider (rawLayer) {
|
|
9
|
-
const options = {}
|
|
8
|
+
async function createTerrainProvider (rawLayer) {
|
|
9
|
+
const options = {},
|
|
10
|
+
terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(rawLayer.url, options);
|
|
10
11
|
|
|
11
12
|
if (rawLayer.cesiumTerrainProviderOptions) {
|
|
12
13
|
Object.assign(options, rawLayer.cesiumTerrainProviderOptions);
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
return
|
|
15
|
+
|
|
16
|
+
return terrainProvider;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
/**
|
|
@@ -24,10 +25,10 @@ function createTerrainProvider (rawLayer) {
|
|
|
24
25
|
* @param {OLCesium} map ol cesium map
|
|
25
26
|
* @returns {void}
|
|
26
27
|
*/
|
|
27
|
-
|
|
28
|
+
async function setVisible (value, rawLayer, map) {
|
|
28
29
|
if (map && typeof map.getCesiumScene === "function") {
|
|
29
30
|
if (value) {
|
|
30
|
-
map.getCesiumScene().terrainProvider = createTerrainProvider(rawLayer);
|
|
31
|
+
map.getCesiumScene().terrainProvider = await createTerrainProvider(rawLayer);
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
33
34
|
map.getCesiumScene().terrainProvider = new Cesium.EllipsoidTerrainProvider({});
|
|
@@ -63,3 +64,4 @@ export function get (key) {
|
|
|
63
64
|
return this.values[key];
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
module.exports.setVisible = setVisible;
|
package/src/layer/tileset.js
CHANGED
|
@@ -9,11 +9,12 @@ function createTileSet (rawLayer) {
|
|
|
9
9
|
const url = rawLayer.url.split("?")[0] + "/tileset.json",
|
|
10
10
|
options = {};
|
|
11
11
|
|
|
12
|
+
|
|
12
13
|
if (rawLayer.cesium3DTilesetOptions) {
|
|
13
14
|
Object.assign(options, rawLayer.cesium3DTilesetOptions);
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
return
|
|
16
|
+
|
|
17
|
+
return Promise.resolve(Cesium.Cesium3DTileset.fromUrl(url, options));
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -24,6 +25,7 @@ function createTileSet (rawLayer) {
|
|
|
24
25
|
* @param {string} [rawLayer.cesiumTerrainProviderOptions] - see https://cesiumjs.org/Cesium/Build/Documentation/CesiumTerrainProvider.html
|
|
25
26
|
* @returns {void}
|
|
26
27
|
*/
|
|
28
|
+
|
|
27
29
|
export default function Tileset (rawLayer) {
|
|
28
30
|
this.values = {
|
|
29
31
|
name: rawLayer.name,
|
|
@@ -31,8 +33,13 @@ export default function Tileset (rawLayer) {
|
|
|
31
33
|
typ: rawLayer.typ
|
|
32
34
|
};
|
|
33
35
|
if (Cesium) {
|
|
34
|
-
this.tileset = createTileSet(rawLayer);
|
|
35
|
-
this.tileset.
|
|
36
|
+
this.tileset = Promise.resolve(createTileSet(rawLayer));
|
|
37
|
+
this.tileset.then(function (tileset) {
|
|
38
|
+
if (tileset) {
|
|
39
|
+
tileset.layerReferenceId = rawLayer.id;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
|
|
@@ -69,7 +76,9 @@ Tileset.prototype.setVisible = function (value, map) {
|
|
|
69
76
|
if (map && typeof map.getCesiumScene === "function") {
|
|
70
77
|
if (value) {
|
|
71
78
|
if (!map.getCesiumScene().primitives.contains(this.tileset)) {
|
|
72
|
-
|
|
79
|
+
this.tileset.then(function (tileset) {
|
|
80
|
+
map.getCesiumScene().primitives.add(tileset);
|
|
81
|
+
});
|
|
73
82
|
}
|
|
74
83
|
this.tileset.show = true;
|
|
75
84
|
}
|
package/src/layer/vectorBase.js
CHANGED
|
@@ -15,7 +15,7 @@ export function createLayerSource (attrs) {
|
|
|
15
15
|
|
|
16
16
|
// perform necessary feature operations if renderer is webgl
|
|
17
17
|
if (attrs.renderer === "webgl") {
|
|
18
|
-
webgl.afterLoading(source.getFeatures(), attrs.styleId, attrs.excludeTypesFromParsing);
|
|
18
|
+
webgl.afterLoading(source.getFeatures(), attrs.styleId, attrs.excludeTypesFromParsing, attrs.isPointLayer);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
return source;
|
|
@@ -30,7 +30,7 @@ export function createLayerSource (attrs) {
|
|
|
30
30
|
export function updateSource (layer, features) {
|
|
31
31
|
// perform necessary feature operations if renderer is webgl
|
|
32
32
|
if (layer.get("renderer") === "webgl") {
|
|
33
|
-
webgl.afterLoading(features, layer.get("styleId"), layer.get("excludeTypesFromParsing"));
|
|
33
|
+
webgl.afterLoading(features, layer.get("styleId"), layer.get("excludeTypesFromParsing"), layer.get("isPointLayer"));
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
layer.getSource().clear(true);
|
package/src/layer/vectorTile.js
CHANGED
|
@@ -3,6 +3,7 @@ import VectorTileLayer from "ol/layer/VectorTile";
|
|
|
3
3
|
import VectorTileSource from "ol/source/VectorTile";
|
|
4
4
|
import OpenLayersTileGrid from "ol/tilegrid/TileGrid";
|
|
5
5
|
import {extentFromProjection} from "ol/tilegrid";
|
|
6
|
+
import * as webgl from "../renderer/webgl";
|
|
6
7
|
|
|
7
8
|
import {stylefunction, apply} from "ol-mapbox-style";
|
|
8
9
|
|
|
@@ -108,11 +109,13 @@ function mustCreateTileGrid (options = {}) {
|
|
|
108
109
|
*
|
|
109
110
|
* @param {string} url - url to vector tile service
|
|
110
111
|
* @param {tileGridProperties} [options] - properties for tileGrid
|
|
112
|
+
* @param {"default" | "webgl" | undefined} [options.renderer] - use default canvas or webgl renderer
|
|
113
|
+
* @param {string} [options.styleId] - the styleId of the layer, only necessary for webgl style pipeline
|
|
114
|
+
* @param {string[]} [options.excludeTypesFromParsing] - types that should not be parsed from strings, only necessary for webgl
|
|
111
115
|
* @returns {ol.source.VectorTile} Source
|
|
112
116
|
*/
|
|
113
117
|
export function createLayerSource (url, options = {}) {
|
|
114
118
|
options.epsg = options.epsg ? options.epsg : defaults.epsg;
|
|
115
|
-
|
|
116
119
|
const sourceParams = {
|
|
117
120
|
projection: options.epsg,
|
|
118
121
|
format: new MVT(),
|
|
@@ -126,7 +129,6 @@ export function createLayerSource (url, options = {}) {
|
|
|
126
129
|
if (mustCreateTileGrid(options)) {
|
|
127
130
|
sourceParams.tileGrid = createTileGrid(options);
|
|
128
131
|
}
|
|
129
|
-
|
|
130
132
|
return new VectorTileSource(sourceParams);
|
|
131
133
|
}
|
|
132
134
|
|
|
@@ -143,13 +145,35 @@ export function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {
|
|
|
143
145
|
console.error(`Cancelled creation of layer "${rawLayer.id}"(${rawLayer.name}) because of missing required parameters`);
|
|
144
146
|
return undefined;
|
|
145
147
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
let layer, source;
|
|
149
|
+
|
|
150
|
+
// use WebGL render pipeline, if specified
|
|
151
|
+
if (layerParams.renderer === "webgl") {
|
|
152
|
+
source = createLayerSource(rawLayer.url, {
|
|
153
|
+
...rawLayer,
|
|
154
|
+
renderer: layerParams.renderer,
|
|
155
|
+
styleId: layerParams.styleId,
|
|
156
|
+
excludeTypesFromParsing: layerParams.excludeTypesFromParsing
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
layer = webgl.createLayer({
|
|
160
|
+
extent: source.getTileGrid().getExtent(),
|
|
161
|
+
...rawLayer,
|
|
162
|
+
...layerParams,
|
|
163
|
+
source
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
return layer;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// use default canvas renderer
|
|
170
|
+
source = createLayerSource(rawLayer.url, rawLayer);
|
|
171
|
+
layer = new VectorTileLayer(Object.assign({
|
|
172
|
+
id: rawLayer.id, name: rawLayer.name, attribution: rawLayer.olAttribution, extent: source.getTileGrid().getExtent(),
|
|
173
|
+
minZoom: rawLayer.minZoom, maxZoom: rawLayer.maxZoom, source: source,
|
|
174
|
+
declutter: true}, layerParams));
|
|
151
175
|
|
|
152
|
-
if (options.style) {
|
|
176
|
+
if (options.style && rawLayer.renderer !== "webgl") {
|
|
153
177
|
layer.setStyle(options.style);
|
|
154
178
|
}
|
|
155
179
|
|
package/src/layer/wfs.js
CHANGED
|
@@ -209,12 +209,12 @@ function createLayerSource (rawLayer, options = {}) {
|
|
|
209
209
|
if (rawLayer.renderer === "webgl") {
|
|
210
210
|
if (options.loadingStrategy === bbox) {
|
|
211
211
|
source.on("featuresloadend", event => {
|
|
212
|
-
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing);
|
|
212
|
+
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
else {
|
|
216
216
|
source.once("featuresloadend", event => {
|
|
217
|
-
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing);
|
|
217
|
+
webgl.afterLoading(event?.features, rawLayer.styleId, rawLayer.excludeTypesFromParsing, rawLayer.isPointLayer);
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
220
|
}
|
|
@@ -238,7 +238,8 @@ function createLayer (rawLayer = {}, {layerParams = {}, options = {}} = {}) {
|
|
|
238
238
|
...rawLayer,
|
|
239
239
|
renderer: layerParams.renderer,
|
|
240
240
|
styleId: layerParams.styleId,
|
|
241
|
-
excludeTypesFromParsing: layerParams.excludeTypesFromParsing
|
|
241
|
+
excludeTypesFromParsing: layerParams.excludeTypesFromParsing,
|
|
242
|
+
isPointLayer: layerParams.isPointLayer
|
|
242
243
|
}, options);
|
|
243
244
|
layer = webgl.createLayer({
|
|
244
245
|
...rawLayer,
|
package/src/layer/wmts.js
CHANGED
|
@@ -112,8 +112,10 @@ function createLayerSourceByCapabilities (attrs, tileLayer) {
|
|
|
112
112
|
const layerIdentifier = attrs.layers,
|
|
113
113
|
url = attrs.capabilitiesUrl,
|
|
114
114
|
matrixSet = attrs.tileMatrixSet,
|
|
115
|
+
format = attrs.format,
|
|
115
116
|
capabilitiesOptions = {
|
|
116
|
-
layer: layerIdentifier
|
|
117
|
+
layer: layerIdentifier,
|
|
118
|
+
format
|
|
117
119
|
};
|
|
118
120
|
|
|
119
121
|
// use the matrixSet (if defined) for optionsFromCapabilities
|
|
@@ -201,4 +203,4 @@ export default {
|
|
|
201
203
|
getWMTSCapabilities,
|
|
202
204
|
generateArrays,
|
|
203
205
|
showErrorMessage
|
|
204
|
-
};
|
|
206
|
+
};
|
|
@@ -38,6 +38,26 @@ let styleObject = null,
|
|
|
38
38
|
styleObjectOuterCircle = null,
|
|
39
39
|
zIndex = 0;
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Converts a value from one unit to another.
|
|
43
|
+
* @param {Number} value The value to convert.
|
|
44
|
+
* @param {String} sourceUnit The source unit.
|
|
45
|
+
* @param {String} targetUnit The target unit.
|
|
46
|
+
* @returns {Number} The converted value.
|
|
47
|
+
*/
|
|
48
|
+
function convertUnits (value, sourceUnit, targetUnit) {
|
|
49
|
+
if (sourceUnit === targetUnit) {
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
else if (sourceUnit === "m" && targetUnit === "km") {
|
|
53
|
+
return value / 1000;
|
|
54
|
+
}
|
|
55
|
+
else if (sourceUnit === "km" && targetUnit === "m") {
|
|
56
|
+
return value * 1000;
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
|
|
41
61
|
/**
|
|
42
62
|
* Transform the radius to map projection unit.
|
|
43
63
|
* @param {Number} radius The radius.
|
|
@@ -70,8 +90,10 @@ function transformMapUnitRadius (radius, mapProjection) {
|
|
|
70
90
|
*/
|
|
71
91
|
function drawOuterCircle (feature, mapProjection, source, options = {}) {
|
|
72
92
|
const innerCircleFeature = feature.clone(),
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
innerRadius = convertUnits(options.innerRadius, options.unit, "m"),
|
|
94
|
+
outerRadius = convertUnits(options.outerRadius, options.unit, "m"),
|
|
95
|
+
mapUnitInnerRadius = transformMapUnitRadius(innerRadius, mapProjection),
|
|
96
|
+
mapUnitOuterRadius = transformMapUnitRadius(outerRadius, mapProjection),
|
|
75
97
|
innerStyle = createStyle.createStyle(styleObject, innerCircleFeature, false),
|
|
76
98
|
outerStyle = createStyle.createStyle(styleObjectOuterCircle, feature, false);
|
|
77
99
|
|
|
@@ -95,7 +117,8 @@ function drawOuterCircle (feature, mapProjection, source, options = {}) {
|
|
|
95
117
|
* @returns {void}
|
|
96
118
|
*/
|
|
97
119
|
function drawInnerCircle (feature, mapProjection, options = {}) {
|
|
98
|
-
const
|
|
120
|
+
const innerRadius = convertUnits(options.innerRadius, options.unit, "m"),
|
|
121
|
+
mapUnitInnerRadius = transformMapUnitRadius(innerRadius, mapProjection);
|
|
99
122
|
|
|
100
123
|
feature.getGeometry().setRadius(mapUnitInnerRadius);
|
|
101
124
|
}
|
|
@@ -205,6 +228,7 @@ function createDrawInteraction (drawType, source) {
|
|
|
205
228
|
export {styleObject};
|
|
206
229
|
|
|
207
230
|
export default {
|
|
231
|
+
convertUnits,
|
|
208
232
|
createDrawInteraction,
|
|
209
233
|
drawCircle,
|
|
210
234
|
drawInnerCircle,
|
package/src/maps/ol/olMap.js
CHANGED
|
@@ -7,7 +7,6 @@ import * as wms from "../../layer/wms";
|
|
|
7
7
|
import wmts from "../../layer/wmts";
|
|
8
8
|
import * as geojson from "../../layer/geojson";
|
|
9
9
|
import wfs from "../../layer/wfs";
|
|
10
|
-
import * as vectorBase from "../../layer/vectorBase";
|
|
11
10
|
import * as vectortile from "../../layer/vectorTile";
|
|
12
11
|
import * as oaf from "../../layer/oaf";
|
|
13
12
|
import {createMapView} from "../../maps/mapView";
|
|
@@ -26,7 +25,6 @@ const layerBuilderMap = {
|
|
|
26
25
|
"wmts": wmts,
|
|
27
26
|
wfs,
|
|
28
27
|
geojson,
|
|
29
|
-
vectorBase,
|
|
30
28
|
vectortile,
|
|
31
29
|
oaf
|
|
32
30
|
},
|