智慧水务管理系统 - 精河县供水工程综合管理平台

findTileMetadata.js 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Frozen from "../Core/Frozen.js";
  2. import defined from "../Core/defined.js";
  3. import hasExtension from "./hasExtension.js";
  4. import TileMetadata from "./TileMetadata.js";
  5. import oneTimeWarning from "../Core/oneTimeWarning.js";
  6. /**
  7. * Check if a tile has metadata, either defined in its metadata field (3D Tiles 1.1)
  8. * or in the <code>3DTILES_metadata</code> extension. If defined, get the tile metadata
  9. * with the corresponding class.
  10. * <p>
  11. * This assumes that tileset.metadata has been created before any tiles are constructed.
  12. * </p>
  13. * @function
  14. *
  15. * @param {Cesium3DTileset} tileset The tileset to query for tile metadata
  16. * @param {object} tileHeader the JSON header for a {@link Cesium3DTile}
  17. * @return {TileMetadata} the tile metadata, or <code>undefined</code> if not found
  18. * @private
  19. * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
  20. */
  21. function findTileMetadata(tileset, tileHeader) {
  22. const metadataJson = hasExtension(tileHeader, "3DTILES_metadata")
  23. ? tileHeader.extensions["3DTILES_metadata"]
  24. : tileHeader.metadata;
  25. if (!defined(metadataJson)) {
  26. return undefined;
  27. }
  28. if (!defined(tileset.schema)) {
  29. findTileMetadata._oneTimeWarning(
  30. "findTileMetadata-missing-root-schema",
  31. "Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.",
  32. );
  33. return undefined;
  34. }
  35. const classes = tileset.schema.classes ?? Frozen.EMPTY_OBJECT;
  36. if (defined(metadataJson.class)) {
  37. const tileClass = classes[metadataJson.class];
  38. return new TileMetadata({
  39. tile: metadataJson,
  40. class: tileClass,
  41. });
  42. }
  43. return undefined;
  44. }
  45. // Exposed for testing
  46. findTileMetadata._oneTimeWarning = oneTimeWarning;
  47. export default findTileMetadata;