@vcmap/core 6.3.0-rc.1 → 6.3.0-rc.2

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 (159) hide show
  1. package/dist/cesium.d.ts +12 -0
  2. package/dist/index.d.ts +10 -2
  3. package/dist/index.js +9 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/ol.d.ts +13 -2
  6. package/dist/src/cesium/cesium3DTileFeature.d.ts +1 -0
  7. package/dist/src/cesium/cesium3DTileFeature.js +16 -3
  8. package/dist/src/cesium/cesium3DTileFeature.js.map +1 -1
  9. package/dist/src/cesium/cesium3DTilePointFeature.js +2 -1
  10. package/dist/src/cesium/cesium3DTilePointFeature.js.map +1 -1
  11. package/dist/src/classRegistry.d.ts +7 -1
  12. package/dist/src/classRegistry.js.map +1 -1
  13. package/dist/src/featureProvider/abstractAttributeProvider.d.ts +62 -0
  14. package/dist/src/featureProvider/abstractAttributeProvider.js +129 -0
  15. package/dist/src/featureProvider/abstractAttributeProvider.js.map +1 -0
  16. package/dist/src/featureProvider/abstractFeatureProvider.d.ts +9 -18
  17. package/dist/src/featureProvider/abstractFeatureProvider.js +7 -38
  18. package/dist/src/featureProvider/abstractFeatureProvider.js.map +1 -1
  19. package/dist/src/featureProvider/compositeFeatureProvider.d.ts +27 -0
  20. package/dist/src/featureProvider/compositeFeatureProvider.js +53 -0
  21. package/dist/src/featureProvider/compositeFeatureProvider.js.map +1 -0
  22. package/dist/src/featureProvider/csvAttributeProvider.d.ts +41 -0
  23. package/dist/src/featureProvider/csvAttributeProvider.js +126 -0
  24. package/dist/src/featureProvider/csvAttributeProvider.js.map +1 -0
  25. package/dist/src/featureProvider/featureProviderFactory.d.ts +3 -0
  26. package/dist/src/featureProvider/featureProviderFactory.js +17 -0
  27. package/dist/src/featureProvider/featureProviderFactory.js.map +1 -0
  28. package/dist/src/featureProvider/i3sAttributeProvider.d.ts +7 -0
  29. package/dist/src/featureProvider/i3sAttributeProvider.js +43 -0
  30. package/dist/src/featureProvider/i3sAttributeProvider.js.map +1 -0
  31. package/dist/src/featureProvider/jsonAttributeProvider.d.ts +26 -0
  32. package/dist/src/featureProvider/jsonAttributeProvider.js +73 -0
  33. package/dist/src/featureProvider/jsonAttributeProvider.js.map +1 -0
  34. package/dist/src/featureProvider/tileProviderFeatureProvider.d.ts +4 -6
  35. package/dist/src/featureProvider/tileProviderFeatureProvider.js +9 -11
  36. package/dist/src/featureProvider/tileProviderFeatureProvider.js.map +1 -1
  37. package/dist/src/featureProvider/urlIdAttributeProvider.d.ts +28 -0
  38. package/dist/src/featureProvider/urlIdAttributeProvider.js +50 -0
  39. package/dist/src/featureProvider/urlIdAttributeProvider.js.map +1 -0
  40. package/dist/src/featureProvider/wmsFeatureProvider.d.ts +12 -3
  41. package/dist/src/featureProvider/wmsFeatureProvider.js +17 -6
  42. package/dist/src/featureProvider/wmsFeatureProvider.js.map +1 -1
  43. package/dist/src/interaction/featureAtPixelInteraction.d.ts +15 -3
  44. package/dist/src/interaction/featureAtPixelInteraction.js +41 -1
  45. package/dist/src/interaction/featureAtPixelInteraction.js.map +1 -1
  46. package/dist/src/interaction/featureProviderInteraction.js +42 -26
  47. package/dist/src/interaction/featureProviderInteraction.js.map +1 -1
  48. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.d.ts +14 -5
  49. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js +243 -128
  50. package/dist/src/layer/cesium/cesiumTilesetCesiumImpl.js.map +1 -1
  51. package/dist/src/layer/cesium/i3sCesiumImpl.d.ts +33 -0
  52. package/dist/src/layer/cesium/i3sCesiumImpl.js +107 -0
  53. package/dist/src/layer/cesium/i3sCesiumImpl.js.map +1 -0
  54. package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js +2 -1
  55. package/dist/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.js.map +1 -1
  56. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js +7 -6
  57. package/dist/src/layer/cesium/vectorRasterTileCesiumImpl.js.map +1 -1
  58. package/dist/src/layer/cesium/vectorTileImageryProvider.js +2 -2
  59. package/dist/src/layer/cesium/vectorTileImageryProvider.js.map +1 -1
  60. package/dist/src/layer/cesiumTilesetLayer.d.ts +9 -0
  61. package/dist/src/layer/cesiumTilesetLayer.js +26 -1
  62. package/dist/src/layer/cesiumTilesetLayer.js.map +1 -1
  63. package/dist/src/layer/i3sLayer.d.ts +80 -0
  64. package/dist/src/layer/i3sLayer.js +242 -0
  65. package/dist/src/layer/i3sLayer.js.map +1 -0
  66. package/dist/src/layer/layer.d.ts +8 -3
  67. package/dist/src/layer/layer.js +7 -1
  68. package/dist/src/layer/layer.js.map +1 -1
  69. package/dist/src/layer/layerSymbols.d.ts +4 -0
  70. package/dist/src/layer/layerSymbols.js +4 -0
  71. package/dist/src/layer/layerSymbols.js.map +1 -1
  72. package/dist/src/layer/panoramaDatasetLayer.d.ts +2 -0
  73. package/dist/src/layer/panoramaDatasetLayer.js +33 -13
  74. package/dist/src/layer/panoramaDatasetLayer.js.map +1 -1
  75. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js +3 -2
  76. package/dist/src/layer/tileProvider/flatGeobufTileProvider.js.map +1 -1
  77. package/dist/src/layer/tileProvider/mvtTileProvider.js +3 -2
  78. package/dist/src/layer/tileProvider/mvtTileProvider.js.map +1 -1
  79. package/dist/src/layer/tileProvider/tileProvider.d.ts +6 -0
  80. package/dist/src/layer/tileProvider/tileProvider.js +12 -1
  81. package/dist/src/layer/tileProvider/tileProvider.js.map +1 -1
  82. package/dist/src/layer/vectorLayer.js +2 -2
  83. package/dist/src/layer/vectorLayer.js.map +1 -1
  84. package/dist/src/layer/vectorProperties.js +10 -1
  85. package/dist/src/layer/vectorProperties.js.map +1 -1
  86. package/dist/src/layer/vectorTileLayer.d.ts +14 -5
  87. package/dist/src/layer/vectorTileLayer.js +78 -26
  88. package/dist/src/layer/vectorTileLayer.js.map +1 -1
  89. package/dist/src/layer/wmsLayer.d.ts +3 -0
  90. package/dist/src/layer/wmsLayer.js +62 -32
  91. package/dist/src/layer/wmsLayer.js.map +1 -1
  92. package/dist/src/map/baseCesiumMap.d.ts +4 -4
  93. package/dist/src/map/baseCesiumMap.js +12 -0
  94. package/dist/src/map/baseCesiumMap.js.map +1 -1
  95. package/dist/src/map/cesiumMap.js +0 -11
  96. package/dist/src/map/cesiumMap.js.map +1 -1
  97. package/dist/src/map/obliqueMap.js +11 -4
  98. package/dist/src/map/obliqueMap.js.map +1 -1
  99. package/dist/src/map/panoramaMap.js +1 -1
  100. package/dist/src/panorama/panoramaImage.js +6 -5
  101. package/dist/src/panorama/panoramaImage.js.map +1 -1
  102. package/dist/src/style/declarativeStyleItem.js +7 -8
  103. package/dist/src/style/declarativeStyleItem.js.map +1 -1
  104. package/dist/src/util/fetch.d.ts +7 -0
  105. package/dist/src/util/fetch.js +7 -0
  106. package/dist/src/util/fetch.js.map +1 -1
  107. package/dist/src/vcsApp.d.ts +2 -3
  108. package/dist/src/vcsApp.js.map +1 -1
  109. package/dist/src/vcsModuleHelpers.d.ts +5 -2
  110. package/dist/src/vcsModuleHelpers.js +27 -1
  111. package/dist/src/vcsModuleHelpers.js.map +1 -1
  112. package/dist/tests/unit/helpers/cesiumHelpers.js +7 -1
  113. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  114. package/index.ts +27 -0
  115. package/package.json +2 -2
  116. package/src/cesium/cesium.d.ts +12 -0
  117. package/src/cesium/cesium3DTileFeature.ts +25 -3
  118. package/src/cesium/cesium3DTilePointFeature.ts +3 -1
  119. package/src/classRegistry.ts +8 -3
  120. package/src/featureProvider/abstractAttributeProvider.ts +201 -0
  121. package/src/featureProvider/abstractFeatureProvider.ts +27 -47
  122. package/src/featureProvider/compositeFeatureProvider.ts +103 -0
  123. package/src/featureProvider/csvAttributeProvider.ts +186 -0
  124. package/src/featureProvider/featureProviderFactory.ts +31 -0
  125. package/src/featureProvider/i3sAttributeProvider.ts +60 -0
  126. package/src/featureProvider/jsonAttributeProvider.ts +109 -0
  127. package/src/featureProvider/tileProviderFeatureProvider.ts +13 -14
  128. package/src/featureProvider/urlIdAttributeProvider.ts +82 -0
  129. package/src/featureProvider/wmsFeatureProvider.ts +24 -7
  130. package/src/global.d.ts +2 -0
  131. package/src/interaction/featureAtPixelInteraction.ts +53 -3
  132. package/src/interaction/featureProviderInteraction.ts +59 -38
  133. package/src/layer/cesium/cesiumTilesetCesiumImpl.ts +296 -157
  134. package/src/layer/cesium/i3sCesiumImpl.ts +141 -0
  135. package/src/layer/cesium/vcsTile/vcsQuadtreeTileProvider.ts +4 -3
  136. package/src/layer/cesium/vectorRasterTileCesiumImpl.ts +7 -6
  137. package/src/layer/cesium/vectorTileImageryProvider.ts +2 -2
  138. package/src/layer/cesiumTilesetLayer.ts +51 -1
  139. package/src/layer/i3sLayer.ts +343 -0
  140. package/src/layer/layer.ts +30 -3
  141. package/src/layer/layerSymbols.ts +5 -0
  142. package/src/layer/panoramaDatasetLayer.ts +44 -13
  143. package/src/layer/tileProvider/flatGeobufTileProvider.ts +3 -2
  144. package/src/layer/tileProvider/mvtTileProvider.ts +3 -2
  145. package/src/layer/tileProvider/tileProvider.ts +13 -1
  146. package/src/layer/vectorLayer.ts +4 -2
  147. package/src/layer/vectorProperties.ts +10 -1
  148. package/src/layer/vectorTileLayer.ts +135 -47
  149. package/src/layer/wmsLayer.ts +77 -44
  150. package/src/map/baseCesiumMap.ts +29 -5
  151. package/src/map/cesiumMap.ts +0 -15
  152. package/src/map/obliqueMap.ts +13 -6
  153. package/src/map/panoramaMap.ts +1 -1
  154. package/src/ol/ol.d.ts +13 -2
  155. package/src/panorama/panoramaImage.ts +8 -5
  156. package/src/style/declarativeStyleItem.ts +7 -9
  157. package/src/util/fetch.ts +7 -0
  158. package/src/vcsApp.ts +7 -8
  159. package/src/vcsModuleHelpers.ts +62 -4
@@ -1,6 +1,7 @@
1
1
  import { getLogger as getLoggerByName } from '@vcsuite/logger';
2
2
  import Viewpoint from './util/viewpoint.js';
3
3
  import { getObjectFromClassRegistry } from './classRegistry.js';
4
+ import CompositeFeatureProvider from './featureProvider/compositeFeatureProvider.js';
4
5
  function getLogger() {
5
6
  return getLoggerByName('init');
6
7
  }
@@ -19,6 +20,26 @@ export function deserializeViewpoint(viewpointObject) {
19
20
  getLogger().warning(`Viewpoint ${String(viewpointObject.name)} is not valid`);
20
21
  return null;
21
22
  }
23
+ export function deserializeFeatureProvider(vcsApp, options) {
24
+ if (options.type === CompositeFeatureProvider.className) {
25
+ const { featureProviders: featureProviderOptions, attributeProviders: attributeProviderOptions, } = options;
26
+ const featureProviders = featureProviderOptions
27
+ .map((fpConfig) => deserializeFeatureProvider(vcsApp, fpConfig))
28
+ .filter((fp) => !!fp);
29
+ const attributeProviders = attributeProviderOptions
30
+ .map((apConfig) => deserializeFeatureProvider(vcsApp, apConfig))
31
+ .filter((ap) => !!ap);
32
+ return new CompositeFeatureProvider({
33
+ ...options,
34
+ featureProviders,
35
+ attributeProviders,
36
+ });
37
+ }
38
+ if (options.type) {
39
+ return getObjectFromClassRegistry(vcsApp.featureProviderClassRegistry, options);
40
+ }
41
+ return null;
42
+ }
22
43
  export function deserializeLayer(vcsApp, layerConfig) {
23
44
  let style;
24
45
  if (layerConfig.style) {
@@ -42,9 +63,13 @@ export function deserializeLayer(vcsApp, layerConfig) {
42
63
  if (layerConfig.tileProvider) {
43
64
  tileProvider = getObjectFromClassRegistry(vcsApp.tileProviderClassRegistry, layerConfig.tileProvider);
44
65
  }
66
+ let attributeProvider;
67
+ if (layerConfig.attributeProvider) {
68
+ attributeProvider = deserializeFeatureProvider(vcsApp, layerConfig.attributeProvider);
69
+ }
45
70
  let featureProvider;
46
71
  if (layerConfig.featureProvider) {
47
- featureProvider = getObjectFromClassRegistry(vcsApp.featureProviderClassRegistry, layerConfig.featureProvider);
72
+ featureProvider = deserializeFeatureProvider(vcsApp, layerConfig.featureProvider);
48
73
  }
49
74
  return getObjectFromClassRegistry(vcsApp.layerClassRegistry, {
50
75
  ...layerConfig,
@@ -52,6 +77,7 @@ export function deserializeLayer(vcsApp, layerConfig) {
52
77
  highlightStyle,
53
78
  tileProvider,
54
79
  featureProvider,
80
+ attributeProvider,
55
81
  });
56
82
  }
57
83
  export function serializeLayer(vcsApp, layer) {
@@ -1 +1 @@
1
- {"version":3,"file":"vcsModuleHelpers.js","sourceRoot":"","sources":["../../src/vcsModuleHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAe,MAAM,iBAAiB,CAAC;AAC5E,OAAO,SAAoC,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAchE,SAAS,SAAS;IAChB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AASD,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,SAAwB;IAExB,MAAM,GAAG,GAAG,0BAA0B,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC3E,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,eAAiC;IAEjC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,SAAS,EAAE,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,WAA+B;IAE/B,IAAI,KAAmC,CAAC;IACxC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1C,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,0BAA0B,CAChC,MAAM,CAAC,kBAAkB,EACzB,WAAW,CAAC,KAAK,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,cAA4C,CAAC;IACjD,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;QAC/B,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YACnD,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,0BAA0B,CACzC,MAAM,CAAC,kBAAkB,EACzB,WAAW,CAAC,cAAc,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC;IACjB,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,YAAY,GAAG,0BAA0B,CACvC,MAAM,CAAC,yBAAyB,EAChC,WAAW,CAAC,YAAY,CACzB,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC;IACpB,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,eAAe,GAAG,0BAA0B,CAC1C,MAAM,CAAC,4BAA4B,EACnC,WAAW,CAAC,eAAe,CAC5B,CAAC;IACJ,CAAC;IAED,OAAO,0BAA0B,CAAC,MAAM,CAAC,kBAAkB,EAAE;QAC3D,GAAG,WAAW;QACd,KAAK;QACL,cAAc;QACd,YAAY;QACZ,eAAe;KAChB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,KAAY;IAEZ,MAAM,eAAe,GAAuB,KAAK,CAAC,MAAM,EAAE,CAAC;IAC3D,6DAA6D;IAC7D,aAAa;IACb,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAW,CAAC;IACrE,IACG,eAAe,CAAC,KAAsC,EAAE,IAAI;QAC7D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAE,eAAe,CAAC,KAA0B,CAAC,IAAI,CAAC,EACtE,CAAC;QACD,eAAe,CAAC,KAAK,GAAI,eAAe,CAAC,KAA0B,CAAC,IAAI,CAAC;IAC3E,CAAC;IACD,IACG,eAAe,CAAC,cAA+C,EAAE,IAAI;QACtE,MAAM,CAAC,MAAM,CAAC,MAAM,CACjB,eAAe,CAAC,cAAmC,CAAC,IAAI,CAC1D,EACD,CAAC;QACD,eAAe,CAAC,cAAc,GAC5B,eAAe,CAAC,cACjB,CAAC,IAAI,CAAC;IACT,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAc,EACd,QAAgB,EAChB,YAAqB;IAErB,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAEC;IAED,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"vcsModuleHelpers.js","sourceRoot":"","sources":["../../src/vcsModuleHelpers.ts"],"names":[],"mappings":"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"}
@@ -264,7 +264,7 @@ export function setupCesiumContextLimits() {
264
264
  }
265
265
  class BatchTable {
266
266
  constructor(properties) {
267
- this.properties = properties;
267
+ this.properties = properties ?? {};
268
268
  this.color = new Color();
269
269
  this.show = true;
270
270
  this.destroyed = false;
@@ -275,6 +275,12 @@ class BatchTable {
275
275
  getProperty(id, prop) {
276
276
  return this.properties[prop];
277
277
  }
278
+ setProperty(id, prop, value) {
279
+ this.properties[prop] = value;
280
+ }
281
+ hasProperty(id, prop) {
282
+ return this.properties[prop] !== undefined;
283
+ }
278
284
  getColor() {
279
285
  return this.color;
280
286
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cesiumHelpers.js","sourceRoot":"","sources":["../../../../tests/unit/helpers/cesiumHelpers.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cesiumHelpers.js","sourceRoot":"","sources":["../../../../tests/unit/helpers/cesiumHelpers.js"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -30,12 +30,34 @@ export {
30
30
  } from './src/classRegistry.js';
31
31
  export type { AbstractFeatureProviderOptions } from './src/featureProvider/abstractFeatureProvider.js';
32
32
  export { default as AbstractFeatureProvider } from './src/featureProvider/abstractFeatureProvider.js';
33
+ export {
34
+ default as AbstractAttributeProvider,
35
+ type AttributeProvider,
36
+ type AbstractAttributeProviderOptions,
37
+ } from './src/featureProvider/abstractAttributeProvider.js';
38
+ export {
39
+ default as CompositeFeatureProvider,
40
+ type CompositeFeatureProviderOptions,
41
+ } from './src/featureProvider/compositeFeatureProvider.js';
42
+ export {
43
+ default as CsvAttributeProvider,
44
+ type CsvAttributeProviderOptions,
45
+ } from './src/featureProvider/csvAttributeProvider.js';
33
46
  export {
34
47
  isProvidedFeature,
35
48
  isProvidedClusterFeature,
36
49
  } from './src/featureProvider/featureProviderSymbols.js';
50
+ export {
51
+ default as JSONAttributeProvider,
52
+ type JsonAttributeProviderOptions,
53
+ type JsonAttributeData,
54
+ } from './src/featureProvider/jsonAttributeProvider.js';
37
55
  export type { TileProviderFeatureProviderOptions } from './src/featureProvider/tileProviderFeatureProvider.js';
38
56
  export { default as TileProviderFeatureProvider } from './src/featureProvider/tileProviderFeatureProvider.js';
57
+ export {
58
+ default as UrlIdAttributeProvider,
59
+ type UrlIdAttributeProviderOptions,
60
+ } from './src/featureProvider/urlIdAttributeProvider.js';
39
61
  export type {
40
62
  FormatOptions,
41
63
  WMSFeatureProviderOptions,
@@ -70,6 +92,7 @@ export {
70
92
  } from './src/layer/cesium/cesiumTilesetCesiumImpl.js';
71
93
  export { default as COGCesiumImpl } from './src/layer/cesium/cogCesiumImpl.js';
72
94
  export { default as DataSourceCesiumImpl } from './src/layer/cesium/dataSourceCesiumImpl.js';
95
+ export { default as I3SCesiumImpl } from './src/layer/cesium/i3sCesiumImpl.js';
73
96
  export { default as OpenStreetMapCesiumImpl } from './src/layer/cesium/openStreetMapCesiumImpl.js';
74
97
  export { default as RasterLayerCesiumImpl } from './src/layer/cesium/rasterLayerCesiumImpl.js';
75
98
  export { default as SingleImageCesiumImpl } from './src/layer/cesium/singleImageCesiumImpl.js';
@@ -221,6 +244,8 @@ export { default as WmsOpenlayersImpl } from './src/layer/openlayers/wmsOpenlaye
221
244
  export { default as WmtsOpenlayersImpl } from './src/layer/openlayers/wmtsOpenlayersImpl.js';
222
245
  export type { PointCloudOptions } from './src/layer/pointCloudLayer.js';
223
246
  export { default as PointCloudLayer } from './src/layer/pointCloudLayer.js';
247
+ export type { I3SOptions } from './src/layer/i3sLayer.js';
248
+ export { default as I3SLayer } from './src/layer/i3sLayer.js';
224
249
  export type {
225
250
  RasterLayerOptions,
226
251
  RasterLayerImplementation,
@@ -757,6 +782,7 @@ export {
757
782
  requestUrl,
758
783
  requestJson,
759
784
  requestArrayBuffer,
785
+ getInitForUrl,
760
786
  } from './src/util/fetch.js';
761
787
  export {
762
788
  getFlatCoordinatesFromSimpleGeometry,
@@ -849,6 +875,7 @@ export type { ModuleLayerOptions } from './src/vcsModuleHelpers.js';
849
875
  export {
850
876
  deserializeMap,
851
877
  deserializeViewpoint,
878
+ deserializeFeatureProvider,
852
879
  deserializeLayer,
853
880
  serializeLayer,
854
881
  getLayerIndex,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/core",
3
- "version": "6.3.0-rc.1",
3
+ "version": "6.3.0-rc.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -76,7 +76,7 @@
76
76
  },
77
77
  "prettier": "@vcsuite/eslint-config/prettier.js",
78
78
  "dependencies": {
79
- "@vcsuite/check": "^3.0.0",
79
+ "@vcsuite/check": "^3.2.2",
80
80
  "@vcsuite/logger": "^1.0.1",
81
81
  "@vcsuite/parsers": "^2.0.0",
82
82
  "fast-deep-equal": "^3.1.3",
@@ -21,6 +21,7 @@ import type {
21
21
  import type { isTiledFeature } from '../layer/featureStoreLayer.js';
22
22
  import type { vectorClusterGroupName } from '../vectorCluster/vectorClusterSymbols.js';
23
23
  import { scaleSymbol } from '../layer/vectorSymbols.js';
24
+ import { attributeProviderName } from '../featureProvider/abstractAttributeProvider.js';
24
25
 
25
26
  declare module '@vcmap-cesium/engine' {
26
27
  enum TextureWarp {
@@ -105,6 +106,7 @@ declare module '@vcmap-cesium/engine' {
105
106
  [hidden]?: boolean;
106
107
  [highlighted]?: VectorStyleItem;
107
108
  [originalStyle]?: StyleLike | Color;
109
+ [attributeProviderName]?: string;
108
110
  }
109
111
 
110
112
  interface Primitive {
@@ -172,8 +174,14 @@ declare module '@vcmap-cesium/engine' {
172
174
  [vcsLayerName]?: string;
173
175
  }
174
176
 
177
+ interface I3SDataProvider {
178
+ [vcsLayerName]?: string;
179
+ [allowPicking]?: boolean;
180
+ }
181
+
175
182
  interface Cesium3DTile {
176
183
  boundingVolume: TileBoundingVolume;
184
+ contentBoundingVolume: TileBoundingVolume;
177
185
  contentReady: boolean;
178
186
  [cesiumTilesetLastUpdated]?: number;
179
187
  }
@@ -209,6 +217,7 @@ declare module '@vcmap-cesium/engine' {
209
217
  _batchId: number;
210
218
  getId(): number | string;
211
219
  getAttributes(): Record<string, unknown>;
220
+ setAttribute(key: string, value: unknown): void;
212
221
  [vcsLayerName]?: string;
213
222
  [globalHidden]?: boolean;
214
223
  [hidden]?: boolean;
@@ -216,6 +225,7 @@ declare module '@vcmap-cesium/engine' {
216
225
  [originalStyle]?: StyleLike | Color;
217
226
  [isTiledFeature]?: boolean;
218
227
  [allowPicking]?: boolean;
228
+ [attributeProviderName]?: string;
219
229
  }
220
230
 
221
231
  interface Cesium3DTilePointFeature {
@@ -223,12 +233,14 @@ declare module '@vcmap-cesium/engine' {
223
233
  _batchId: number;
224
234
  getId(): number | string;
225
235
  getAttributes(): Record<string, unknown>;
236
+ setAttribute(key: string, value: unknown): void;
226
237
  [vcsLayerName]?: string;
227
238
  [globalHidden]?: boolean;
228
239
  [hidden]?: boolean;
229
240
  [highlighted]?: VectorStyleItem;
230
241
  [originalStyle]?: StyleLike | Color;
231
242
  [allowPicking]?: boolean;
243
+ [attributeProviderName]?: string;
232
244
  }
233
245
 
234
246
  interface Cesium3DTileStyle {
@@ -7,14 +7,16 @@ Cesium3DTileFeature.prototype.getId = function getId(
7
7
  return (
8
8
  (this.getProperty('id') as string | number) ||
9
9
  `${this.content.url}${String(this._batchId)}`
10
- ); // XXX there is a new property `featureId` on the Cesium3DTileset. this may cause issues when picking b3dm.
10
+ );
11
11
  };
12
12
 
13
13
  export function getAttributes(
14
14
  this: Cesium3DTileFeature | Cesium3DTilePointFeature,
15
15
  ): Record<string, unknown> {
16
16
  if (
17
- (this.tileset.asset as { version: string } | undefined)?.version === '1.1'
17
+ (this.tileset.asset as { version: string } | undefined)?.version ===
18
+ '1.1' ||
19
+ !this.hasProperty('attributes')
18
20
  ) {
19
21
  const attributes: Record<string, unknown> = {};
20
22
  this.getPropertyIds().forEach((id) => {
@@ -22,7 +24,27 @@ export function getAttributes(
22
24
  });
23
25
  return attributes;
24
26
  }
25
- return this.getProperty('attributes') as Record<string, unknown>;
27
+ return (this.getProperty('attributes') as Record<string, unknown>) ?? {};
26
28
  }
27
29
 
28
30
  Cesium3DTileFeature.prototype.getAttributes = getAttributes;
31
+
32
+ export function setAttribute(
33
+ this: Cesium3DTileFeature | Cesium3DTilePointFeature,
34
+ key: string,
35
+ value: unknown,
36
+ ): void {
37
+ if (
38
+ (this.tileset.asset as { version: string } | undefined)?.version ===
39
+ '1.1' ||
40
+ !this.hasProperty('attributes')
41
+ ) {
42
+ this.setProperty(key, value);
43
+ }
44
+ const attributes =
45
+ (this.getProperty('attributes') as Record<string, unknown>) ?? {};
46
+ attributes[key] = value;
47
+ this.setProperty('attributes', attributes);
48
+ }
49
+
50
+ Cesium3DTileFeature.prototype.setAttribute = setAttribute;
@@ -1,5 +1,5 @@
1
1
  import { Cesium3DTilePointFeature } from '@vcmap-cesium/engine';
2
- import { getAttributes } from './cesium3DTileFeature.js';
2
+ import { getAttributes, setAttribute } from './cesium3DTileFeature.js';
3
3
 
4
4
  Cesium3DTilePointFeature.prototype.getId = function getId(
5
5
  this: Cesium3DTilePointFeature,
@@ -11,3 +11,5 @@ Cesium3DTilePointFeature.prototype.getId = function getId(
11
11
  };
12
12
 
13
13
  Cesium3DTilePointFeature.prototype.getAttributes = getAttributes;
14
+
15
+ Cesium3DTilePointFeature.prototype.setAttribute = setAttribute;
@@ -7,6 +7,7 @@ import type VcsMap from './map/vcsMap.js';
7
7
  import type StyleItem from './style/styleItem.js';
8
8
  import type Category from './category/category.js';
9
9
  import type AbstractFeatureProvider from './featureProvider/abstractFeatureProvider.js';
10
+ import type AbstractAttributeProvider from './featureProvider/abstractAttributeProvider.js';
10
11
  import type TileProvider from './layer/tileProvider/tileProvider.js';
11
12
 
12
13
  function logger(): Logger {
@@ -102,9 +103,13 @@ export const tileProviderClassRegistry = new ClassRegistry<
102
103
  typeof TileProvider
103
104
  >();
104
105
 
105
- export const featureProviderClassRegistry = new ClassRegistry<
106
- typeof AbstractFeatureProvider
107
- >();
106
+ export type FeatureProviderClass =
107
+ | ({ new (): AbstractFeatureProvider } & typeof AbstractFeatureProvider)
108
+ | ({
109
+ new (): AbstractAttributeProvider;
110
+ } & typeof AbstractAttributeProvider);
111
+ export const featureProviderClassRegistry =
112
+ new ClassRegistry<FeatureProviderClass>();
108
113
 
109
114
  export const mapClassRegistry = new ClassRegistry<typeof VcsMap>();
110
115
 
@@ -0,0 +1,201 @@
1
+ import Feature from 'ol/Feature.js';
2
+ import type { Extent } from 'ol/extent.js';
3
+ import { v4 as uuid } from 'uuid';
4
+ import { is, oneOf } from '@vcsuite/check';
5
+ import {
6
+ Cesium3DTileFeature,
7
+ Cesium3DTilePointFeature,
8
+ Entity,
9
+ } from '@vcmap-cesium/engine';
10
+ import VcsObject, { type VcsObjectOptions } from '../vcsObject.js';
11
+ import type { EventFeature } from '../interaction/abstractInteraction.js';
12
+ import { featureExists } from '../layer/featureVisibility.js';
13
+
14
+ export type AbstractAttributeProviderOptions = VcsObjectOptions & {
15
+ keyProperty?: string;
16
+ };
17
+
18
+ export const attributeProviderName = Symbol('attributeProvider');
19
+
20
+ export interface AttributeProvider extends VcsObject {
21
+ /**
22
+ * Augments a feature with attributes from the provider
23
+ * @param feature
24
+ */
25
+ augmentFeature(feature: EventFeature): Promise<void>;
26
+ /**
27
+ * Augments multiple features with attributes from the provider
28
+ * @param features
29
+ * @param extent - optional extent in webmercator to limit attribute lookup on certain providers.
30
+ */
31
+ augmentFeatures(features: EventFeature[], extent?: Extent): Promise<void>;
32
+ }
33
+
34
+ export default abstract class AbstractAttributeProvider
35
+ extends VcsObject
36
+ implements AttributeProvider
37
+ {
38
+ static get className(): string {
39
+ return 'AbstractAttributeProvider';
40
+ }
41
+
42
+ static getDefaultOptions(): AbstractAttributeProviderOptions {
43
+ return {
44
+ ...VcsObject.getDefaultOptions(),
45
+ keyProperty: undefined,
46
+ };
47
+ }
48
+
49
+ private _id = uuid();
50
+
51
+ keyProperty?: string;
52
+
53
+ constructor(options: AbstractAttributeProviderOptions) {
54
+ super(options);
55
+
56
+ this.keyProperty = options.keyProperty;
57
+ }
58
+
59
+ private _setAttributesOnFeature(
60
+ feature: EventFeature,
61
+ attributes: Record<string, unknown>,
62
+ ): void {
63
+ if (feature instanceof Feature) {
64
+ feature.setProperties(attributes, true);
65
+ feature.changed();
66
+ } else if (
67
+ feature instanceof Cesium3DTileFeature ||
68
+ feature instanceof Cesium3DTilePointFeature
69
+ ) {
70
+ if (featureExists(feature)) {
71
+ for (const key of Object.keys(attributes)) {
72
+ feature.setAttribute(key, attributes[key]);
73
+ }
74
+ }
75
+
76
+ feature[attributeProviderName] = this._id;
77
+ } else if (feature instanceof Entity) {
78
+ for (const key of Object.keys(attributes)) {
79
+ feature.properties?.addProperty(key, attributes[key]);
80
+ }
81
+ feature[attributeProviderName] = this._id;
82
+ }
83
+ }
84
+
85
+ private _getKeyForFeature(feature: EventFeature): string | undefined {
86
+ let key: unknown;
87
+ if (this.keyProperty) {
88
+ key = feature.getProperty(this.keyProperty) as unknown;
89
+ } else {
90
+ key = feature.getId();
91
+ }
92
+
93
+ if (is(key, oneOf(String, Number))) {
94
+ return String(key);
95
+ }
96
+ return undefined;
97
+ }
98
+
99
+ /**
100
+ * Retrieves attributes for a given key and feature.
101
+ * Be sure not to use the feature id for lookup, but the provided key.
102
+ * @param key - the key to retrieve attributes for
103
+ * @param feature - the feature requesting the attributes
104
+ * @protected
105
+ */
106
+ protected abstract _getAttributes(
107
+ key: string,
108
+ feature: EventFeature,
109
+ ): Promise<Record<string, unknown> | undefined>;
110
+
111
+ /**
112
+ * Optional bulk attribute retrieval for multiple keys.
113
+ * Can be implemented for optimal loading of data.
114
+ * Provides a webmercator extent to limit the lookup if needed.
115
+ * You MUST return a same length array as keys, with undefined for missing attributes.
116
+ * @param bulk - array of key and feature pairs to retrieve attributes for
117
+ * @param _extent - optional extent in webmercator to limit attribute lookup on certain providers.
118
+ * @protected
119
+ */
120
+ protected _getBulkAttributes(
121
+ bulk: { key: string; feature: EventFeature }[],
122
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
123
+ _extent?: Extent,
124
+ ): Promise<(Record<string, unknown> | undefined)[]> {
125
+ return Promise.all(
126
+ bulk.map(({ key, feature }) => this._getAttributes(key, feature)),
127
+ );
128
+ }
129
+
130
+ /**
131
+ * Augments a feature with attributes from the provider
132
+ * @param feature
133
+ */
134
+ async augmentFeature(feature: EventFeature): Promise<void> {
135
+ if (feature[attributeProviderName] !== this._id) {
136
+ const key = this._getKeyForFeature(feature);
137
+ if (key) {
138
+ const attributes = await this._getAttributes(key, feature);
139
+ if (attributes) {
140
+ this._setAttributesOnFeature(feature, attributes);
141
+ }
142
+ }
143
+ }
144
+ feature[attributeProviderName] = this._id;
145
+ }
146
+
147
+ /**
148
+ * Augments multiple features with attributes from the provider
149
+ * @param features
150
+ * @param extent - optional extent in webmercator to limit attribute lookup on certain providers.
151
+ */
152
+ async augmentFeatures(
153
+ features: EventFeature[],
154
+ extent?: Extent,
155
+ ): Promise<void> {
156
+ const bulk = features
157
+ .map((feature) => {
158
+ if (feature[attributeProviderName] !== this._id) {
159
+ const key = this._getKeyForFeature(feature);
160
+ if (key) {
161
+ return { key, feature };
162
+ }
163
+ }
164
+ feature[attributeProviderName] = this._id;
165
+ return undefined;
166
+ })
167
+ .filter((i) => !!i);
168
+
169
+ if (bulk.length === 0) {
170
+ return;
171
+ }
172
+
173
+ const attributes = await this._getBulkAttributes(bulk, extent);
174
+ if (attributes.length !== bulk.length) {
175
+ this.getLogger().error(
176
+ `Bulk attribute retrieval returned ${attributes.length} results for ${bulk.length} features.`,
177
+ );
178
+ return;
179
+ }
180
+
181
+ for (let i = 0; i < bulk.length; i++) {
182
+ const attr = attributes[i];
183
+ if (attr) {
184
+ this._setAttributesOnFeature(bulk[i].feature, attr);
185
+ }
186
+ }
187
+ }
188
+
189
+ toJSON(
190
+ defaultOptions = AbstractAttributeProvider.getDefaultOptions(),
191
+ ): AbstractAttributeProviderOptions {
192
+ const config = super.toJSON(
193
+ defaultOptions,
194
+ ) as AbstractAttributeProviderOptions;
195
+
196
+ if (this.keyProperty !== defaultOptions.keyProperty) {
197
+ config.keyProperty = this.keyProperty;
198
+ }
199
+ return config;
200
+ }
201
+ }