@vcmap/core 5.0.0-rc.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.
Files changed (146) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +44 -0
  3. package/build/postinstall.js +44 -0
  4. package/index.js +139 -0
  5. package/package.json +92 -0
  6. package/src/cesium/cesium3DTileFeature.js +9 -0
  7. package/src/cesium/cesium3DTilePointFeature.js +9 -0
  8. package/src/cesium/cesiumVcsCameraPrimitive.js +146 -0
  9. package/src/cesium/wallpaperMaterial.js +64 -0
  10. package/src/ol/feature.js +47 -0
  11. package/src/ol/geom/circle.js +24 -0
  12. package/src/ol/geom/geometryCollection.js +33 -0
  13. package/src/ol/render/canvas/canvasTileRenderer.js +179 -0
  14. package/src/ol/source/ClusterEnhancedVectorSource.js +39 -0
  15. package/src/ol/source/VcsCluster.js +37 -0
  16. package/src/vcs/vcm/classRegistry.js +106 -0
  17. package/src/vcs/vcm/event/vcsEvent.js +89 -0
  18. package/src/vcs/vcm/globalCollections.js +11 -0
  19. package/src/vcs/vcm/interaction/abstractInteraction.js +149 -0
  20. package/src/vcs/vcm/interaction/coordinateAtPixel.js +102 -0
  21. package/src/vcs/vcm/interaction/eventHandler.js +425 -0
  22. package/src/vcs/vcm/interaction/featureAtPixelInteraction.js +286 -0
  23. package/src/vcs/vcm/interaction/featureProviderInteraction.js +54 -0
  24. package/src/vcs/vcm/interaction/interactionChain.js +124 -0
  25. package/src/vcs/vcm/interaction/interactionType.js +114 -0
  26. package/src/vcs/vcm/layer/buildings.js +17 -0
  27. package/src/vcs/vcm/layer/cesium/cesiumTilesetCesium.js +359 -0
  28. package/src/vcs/vcm/layer/cesium/clusterContext.js +95 -0
  29. package/src/vcs/vcm/layer/cesium/dataSourceCesium.js +171 -0
  30. package/src/vcs/vcm/layer/cesium/openStreetMapCesium.js +29 -0
  31. package/src/vcs/vcm/layer/cesium/pointCloudCesium.js +58 -0
  32. package/src/vcs/vcm/layer/cesium/rasterLayerCesium.js +110 -0
  33. package/src/vcs/vcm/layer/cesium/singleImageCesium.js +49 -0
  34. package/src/vcs/vcm/layer/cesium/terrainCesium.js +80 -0
  35. package/src/vcs/vcm/layer/cesium/tmsCesium.js +54 -0
  36. package/src/vcs/vcm/layer/cesium/vectorCesium.js +255 -0
  37. package/src/vcs/vcm/layer/cesium/vectorContext.js +167 -0
  38. package/src/vcs/vcm/layer/cesium/vectorRasterTileCesium.js +116 -0
  39. package/src/vcs/vcm/layer/cesium/vectorTileImageryProvider.js +246 -0
  40. package/src/vcs/vcm/layer/cesium/wmsCesium.js +71 -0
  41. package/src/vcs/vcm/layer/cesium/wmtsCesium.js +101 -0
  42. package/src/vcs/vcm/layer/cesium/x3dmHelper.js +22 -0
  43. package/src/vcs/vcm/layer/cesiumTileset.js +376 -0
  44. package/src/vcs/vcm/layer/czml.js +141 -0
  45. package/src/vcs/vcm/layer/dataSource.js +259 -0
  46. package/src/vcs/vcm/layer/featureLayer.js +261 -0
  47. package/src/vcs/vcm/layer/featureStore.js +647 -0
  48. package/src/vcs/vcm/layer/featureStoreChanges.js +360 -0
  49. package/src/vcs/vcm/layer/featureStoreState.js +19 -0
  50. package/src/vcs/vcm/layer/featureVisibility.js +435 -0
  51. package/src/vcs/vcm/layer/geojson.js +185 -0
  52. package/src/vcs/vcm/layer/geojsonHelpers.js +450 -0
  53. package/src/vcs/vcm/layer/globalHider.js +157 -0
  54. package/src/vcs/vcm/layer/layer.js +752 -0
  55. package/src/vcs/vcm/layer/layerImplementation.js +102 -0
  56. package/src/vcs/vcm/layer/layerState.js +17 -0
  57. package/src/vcs/vcm/layer/layerSymbols.js +6 -0
  58. package/src/vcs/vcm/layer/oblique/layerOblique.js +76 -0
  59. package/src/vcs/vcm/layer/oblique/obliqueHelpers.js +175 -0
  60. package/src/vcs/vcm/layer/oblique/vectorOblique.js +469 -0
  61. package/src/vcs/vcm/layer/openStreetMap.js +194 -0
  62. package/src/vcs/vcm/layer/openlayers/layerOpenlayers.js +79 -0
  63. package/src/vcs/vcm/layer/openlayers/openStreetMapOpenlayers.js +27 -0
  64. package/src/vcs/vcm/layer/openlayers/rasterLayerOpenlayers.js +121 -0
  65. package/src/vcs/vcm/layer/openlayers/singleImageOpenlayers.js +49 -0
  66. package/src/vcs/vcm/layer/openlayers/tileDebugOpenlayers.js +39 -0
  67. package/src/vcs/vcm/layer/openlayers/tmsOpenlayers.js +62 -0
  68. package/src/vcs/vcm/layer/openlayers/vectorOpenlayers.js +118 -0
  69. package/src/vcs/vcm/layer/openlayers/vectorTileOpenlayers.js +177 -0
  70. package/src/vcs/vcm/layer/openlayers/wmsOpenlayers.js +55 -0
  71. package/src/vcs/vcm/layer/openlayers/wmtsOpenlayers.js +141 -0
  72. package/src/vcs/vcm/layer/pointCloud.js +162 -0
  73. package/src/vcs/vcm/layer/rasterLayer.js +294 -0
  74. package/src/vcs/vcm/layer/singleImage.js +119 -0
  75. package/src/vcs/vcm/layer/terrain.js +122 -0
  76. package/src/vcs/vcm/layer/terrainHelpers.js +123 -0
  77. package/src/vcs/vcm/layer/tileLoadedHelper.js +72 -0
  78. package/src/vcs/vcm/layer/tileProvider/mvtTileProvider.js +104 -0
  79. package/src/vcs/vcm/layer/tileProvider/staticGeojsonTileProvider.js +67 -0
  80. package/src/vcs/vcm/layer/tileProvider/tileProvider.js +584 -0
  81. package/src/vcs/vcm/layer/tileProvider/tileProviderFactory.js +28 -0
  82. package/src/vcs/vcm/layer/tileProvider/urlTemplateTileProvider.js +106 -0
  83. package/src/vcs/vcm/layer/tms.js +121 -0
  84. package/src/vcs/vcm/layer/vector.js +632 -0
  85. package/src/vcs/vcm/layer/vectorHelpers.js +206 -0
  86. package/src/vcs/vcm/layer/vectorProperties.js +1391 -0
  87. package/src/vcs/vcm/layer/vectorSymbols.js +40 -0
  88. package/src/vcs/vcm/layer/vectorTile.js +480 -0
  89. package/src/vcs/vcm/layer/wfs.js +165 -0
  90. package/src/vcs/vcm/layer/wms.js +270 -0
  91. package/src/vcs/vcm/layer/wmsHelpers.js +65 -0
  92. package/src/vcs/vcm/layer/wmts.js +235 -0
  93. package/src/vcs/vcm/maps/baseOLMap.js +257 -0
  94. package/src/vcs/vcm/maps/cameraLimiter.js +219 -0
  95. package/src/vcs/vcm/maps/cesium.js +1192 -0
  96. package/src/vcs/vcm/maps/map.js +511 -0
  97. package/src/vcs/vcm/maps/mapState.js +17 -0
  98. package/src/vcs/vcm/maps/oblique.js +536 -0
  99. package/src/vcs/vcm/maps/openlayers.js +205 -0
  100. package/src/vcs/vcm/object.js +92 -0
  101. package/src/vcs/vcm/oblique/ObliqueCollection.js +572 -0
  102. package/src/vcs/vcm/oblique/ObliqueDataSet.js +357 -0
  103. package/src/vcs/vcm/oblique/ObliqueImage.js +247 -0
  104. package/src/vcs/vcm/oblique/ObliqueImageMeta.js +126 -0
  105. package/src/vcs/vcm/oblique/ObliqueProvider.js +433 -0
  106. package/src/vcs/vcm/oblique/ObliqueView.js +130 -0
  107. package/src/vcs/vcm/oblique/ObliqueViewDirection.js +40 -0
  108. package/src/vcs/vcm/oblique/helpers.js +483 -0
  109. package/src/vcs/vcm/oblique/parseImageJson.js +248 -0
  110. package/src/vcs/vcm/util/clipping/clippingObject.js +386 -0
  111. package/src/vcs/vcm/util/clipping/clippingObjectManager.js +312 -0
  112. package/src/vcs/vcm/util/clipping/clippingPlaneHelper.js +413 -0
  113. package/src/vcs/vcm/util/collection.js +193 -0
  114. package/src/vcs/vcm/util/dateTime.js +60 -0
  115. package/src/vcs/vcm/util/exclusiveManager.js +135 -0
  116. package/src/vcs/vcm/util/extent.js +124 -0
  117. package/src/vcs/vcm/util/featureProvider/abstractFeatureProvider.js +196 -0
  118. package/src/vcs/vcm/util/featureProvider/featureProviderHelpers.js +51 -0
  119. package/src/vcs/vcm/util/featureProvider/featureProviderSymbols.js +11 -0
  120. package/src/vcs/vcm/util/featureProvider/tileProviderFeatureProvider.js +62 -0
  121. package/src/vcs/vcm/util/featureProvider/wmsFeatureProvider.js +280 -0
  122. package/src/vcs/vcm/util/featureconverter/circleToCesium.js +215 -0
  123. package/src/vcs/vcm/util/featureconverter/convert.js +83 -0
  124. package/src/vcs/vcm/util/featureconverter/extent3d.js +154 -0
  125. package/src/vcs/vcm/util/featureconverter/featureconverterHelper.js +591 -0
  126. package/src/vcs/vcm/util/featureconverter/lineStringToCesium.js +171 -0
  127. package/src/vcs/vcm/util/featureconverter/pointToCesium.js +359 -0
  128. package/src/vcs/vcm/util/featureconverter/polygonToCesium.js +229 -0
  129. package/src/vcs/vcm/util/geometryHelpers.js +172 -0
  130. package/src/vcs/vcm/util/indexedCollection.js +158 -0
  131. package/src/vcs/vcm/util/isMobile.js +12 -0
  132. package/src/vcs/vcm/util/layerCollection.js +216 -0
  133. package/src/vcs/vcm/util/locale.js +53 -0
  134. package/src/vcs/vcm/util/mapCollection.js +363 -0
  135. package/src/vcs/vcm/util/math.js +71 -0
  136. package/src/vcs/vcm/util/projection.js +348 -0
  137. package/src/vcs/vcm/util/splitScreen.js +233 -0
  138. package/src/vcs/vcm/util/style/declarativeStyleItem.js +631 -0
  139. package/src/vcs/vcm/util/style/shapesCategory.js +67 -0
  140. package/src/vcs/vcm/util/style/styleFactory.js +48 -0
  141. package/src/vcs/vcm/util/style/styleHelpers.js +555 -0
  142. package/src/vcs/vcm/util/style/styleItem.js +226 -0
  143. package/src/vcs/vcm/util/style/vectorStyleItem.js +927 -0
  144. package/src/vcs/vcm/util/style/writeStyle.js +48 -0
  145. package/src/vcs/vcm/util/urlHelpers.js +16 -0
  146. package/src/vcs/vcm/util/viewpoint.js +333 -0
@@ -0,0 +1,154 @@
1
+ import GeometryType from 'ol/geom/GeometryType.js';
2
+
3
+ /**
4
+ * Create an empty extent.
5
+ * @returns {Array<number>} Empty extent.
6
+ */
7
+ export function createEmpty3D() {
8
+ return [Infinity, Infinity, Infinity, -Infinity, -Infinity, -Infinity];
9
+ }
10
+
11
+ /**
12
+ * Create a new extent or update the provided extent.
13
+ * @param {number} minX Minimum X.
14
+ * @param {number} minY Minimum Y.
15
+ * @param {number} minZ Minimum Z.
16
+ * @param {number} maxX Maximum X.
17
+ * @param {number} maxY Maximum Y.
18
+ * @param {number} maxZ Maximum Z.
19
+ * @param {Array<number>=} optExtent Destination extent.
20
+ * @returns {Array<number>} Extent.
21
+ */
22
+ export function createOrUpdate3D(minX, minY, minZ, maxX, maxY, maxZ, optExtent) {
23
+ if (optExtent) {
24
+ optExtent[0] = minX;
25
+ optExtent[1] = minY;
26
+ optExtent[2] = minZ;
27
+ optExtent[3] = maxX;
28
+ optExtent[4] = maxY;
29
+ optExtent[5] = maxZ;
30
+ return optExtent;
31
+ } else {
32
+ return [minX, minY, minZ, maxX, maxY, maxZ];
33
+ }
34
+ }
35
+
36
+ /**
37
+ * @param {Array<number>} extent Extent.
38
+ * @param {number} x X.
39
+ * @param {number} y Y.
40
+ * @param {number} z Z.
41
+ */
42
+ export function extendXYZ(extent, x, y, z) {
43
+ extent[0] = Math.min(extent[0], x);
44
+ extent[1] = Math.min(extent[1], y);
45
+ extent[2] = Math.min(extent[2], z);
46
+ extent[3] = Math.max(extent[3], x);
47
+ extent[4] = Math.max(extent[4], y);
48
+ extent[5] = Math.max(extent[5], z);
49
+ }
50
+ /**
51
+ * @param {Array<number>} extent Extent.
52
+ * @param {number} x X.
53
+ * @param {number} y Y.
54
+ */
55
+ export function extendXY(extent, x, y) {
56
+ extent[0] = Math.min(extent[0], x);
57
+ extent[1] = Math.min(extent[1], y);
58
+ extent[3] = Math.max(extent[3], x);
59
+ extent[4] = Math.max(extent[4], y);
60
+ }
61
+
62
+ /**
63
+ * @param {Array<number>} extent Extent.
64
+ * @param {number} z Z.
65
+ */
66
+ export function extendZ(extent, z) {
67
+ extent[2] = Math.min(extent[2], z);
68
+ extent[5] = Math.max(extent[5], z);
69
+ }
70
+
71
+ /**
72
+ * @param {Array<number>} extent Extent.
73
+ * @param {Array<number>} flatCoordinates Flat coordinates.
74
+ * @param {number} stride Stride.
75
+ * @returns {Array<number>} Extent.
76
+ */
77
+ export function extendFlatCoordinates(
78
+ extent,
79
+ flatCoordinates,
80
+ stride,
81
+ ) {
82
+ const { length } = flatCoordinates;
83
+ for (let offset = 0; offset < length; offset += stride) {
84
+ if (stride > 2) {
85
+ extendXYZ(extent, flatCoordinates[offset], flatCoordinates[offset + 1], flatCoordinates[offset + 2]);
86
+ } else {
87
+ extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);
88
+ }
89
+ }
90
+ return extent;
91
+ }
92
+
93
+ /**
94
+ * @param {import("ol/geom/Geometry").default} geometry Geometry.
95
+ * @param {Array<number>=} optExtent Extent.
96
+ * @returns {Array<number>} Extent.
97
+ */
98
+ export function createOrUpdateFromGeometry(geometry, optExtent) {
99
+ const extent = optExtent || createEmpty3D();
100
+ if (geometry.getType() === GeometryType.GEOMETRY_COLLECTION) {
101
+ /** @type {import("ol/geom/GeometryCollection").default} */ (geometry)
102
+ .getGeometriesArray().forEach((geom) => { createOrUpdateFromGeometry(geom, extent); });
103
+ } else if (geometry.getType() === GeometryType.CIRCLE) {
104
+ const flatCoordinates = /** @type {import("ol/geom/Circle").default} */ (geometry).getFlatCoordinates();
105
+ const stride = /** @type {import("ol/geom/Circle").default} */ (geometry).getStride();
106
+ const radius = flatCoordinates[stride] - flatCoordinates[0];
107
+ extendXY(
108
+ extent,
109
+ flatCoordinates[0] - radius,
110
+ flatCoordinates[1] - radius,
111
+ );
112
+ extendXY(
113
+ extent,
114
+ flatCoordinates[0] + radius,
115
+ flatCoordinates[1] + radius,
116
+ );
117
+ if (stride > 2) {
118
+ extendZ(extent, flatCoordinates[2]);
119
+ }
120
+ } else {
121
+ const flatCoordinates = /** @type {import("ol/geom/SimpleGeometry").default} */ (geometry).getFlatCoordinates();
122
+ const stride = /** @type {import("ol/geom/SimpleGeometry").default} */ (geometry).getStride();
123
+ extendFlatCoordinates(extent, flatCoordinates, stride);
124
+ }
125
+ return extent;
126
+ }
127
+
128
+ /**
129
+ * @param {VectorHeightInfo} heightInfo
130
+ * @param {Array<number>} optExtent
131
+ */
132
+ export function createOrUpdateFromHeightInfo(heightInfo, optExtent) {
133
+ const extent = optExtent || createEmpty3D();
134
+ if (heightInfo.extruded) {
135
+ const calculatedFeatureMaxHeight =
136
+ heightInfo.groundLevel + heightInfo.storeyHeightsAboveGround.reduce((accumulator, currentValue) => {
137
+ return accumulator + currentValue;
138
+ }, 0);
139
+ extendZ(extent, calculatedFeatureMaxHeight);
140
+ const calculatedFeatureMinHeight =
141
+ heightInfo.groundLevel - heightInfo.storeyHeightsBelowGround.reduce((accumulator, currentValue) => {
142
+ return accumulator + currentValue;
143
+ }, 0);
144
+ extendZ(extent, calculatedFeatureMinHeight);
145
+ }
146
+ }
147
+
148
+ /**
149
+ * @param {Array<number>} extent Extent.
150
+ * @returns {import("ol/extent").Extent} Extent.
151
+ */
152
+ export function make2D(extent) {
153
+ return [extent[0], extent[1], extent[3], extent[4]];
154
+ }