diff --git a/src/modules/cockpit/services/cesiumEngine.js b/src/modules/cockpit/services/cesiumEngine.js --- a/src/modules/cockpit/services/cesiumEngine.js +++ b/src/modules/cockpit/services/cesiumEngine.js @@ -100,12 +100,28 @@ function createBaseLayer(plan) { /** * 在宿主要素上创建 Viewer。 + * + * **署名容器(票 25)**:`creditContainer` **不是开关,是「放哪个容器」**—— + * Cesium 的 Viewer 构造写死 `defined(options.creditContainer) ? options.creditContainer : bottomContainer`, + * 随后 CesiumWidget **两条路径都会**建 CreditDisplay + * (`creditContainer.appendChild(innerCreditContainer)`)。 + * 所以传 `false`/`''` 既关不掉、还会让 `getElement()` 拿到 null 而崩。 + * 真正能生效的做法是**自己给一个不进 DOM 的容器**:Cesium 照旧把署名写进去, + * 但它不在文档流里,屏幕上不出现,destroy 时 Cesium 也会自行摘掉内部节点。 + * + * 合法性前提(本部署已核实,勿轻易推翻):地形走 `CesiumTerrainProvider.fromUrl(本地 URL)`、 + * 影像走内置 TMS 与 `UrlTemplateImageryProvider`、3D Tiles 走 `Cesium3DTileset.fromUrl(本地 URL)`, + * **全链路无 Cesium ion 服务与 ion 资产**。ion 署名义务只在用到 ion 资产时成立, + * 故此处隐藏署名不构成违约;自有数据源署名由地图信息面板在业务界面另行展示。 + * * @param {Element} host 宿主要素(`.map-canvas`) * @param {object} [basemapPlan] `domain/basemap.js` 的底图计划(票 29);缺省 = 不配底图 * @returns {Viewer} */ export function createViewer(host, basemapPlan) { - const viewer = new Viewer(host, { ...VIEWER_OPTIONS, baseLayer: createBaseLayer(basemapPlan) }) + // 票 25:离屏署名容器 —— 故意不 appendChild,署名因此不上屏。 + const creditContainer = document.createElement('div') + const viewer = new Viewer(host, { ...VIEWER_OPTIONS, creditContainer, baseLayer: createBaseLayer(basemapPlan) }) const controller = viewer.scene.screenSpaceCameraController controller.enableRotate = false @@ -399,7 +415,7 @@ function tilesetOptions(plan) { foveatedTimeDelay: 0.6, foveatedMinimumScreenSpaceErrorRelaxation: 0, // 普通 SSE 根据瓦片误差与相机到瓦片的距离决定细化,保持配置的质量取舍。 - maximumScreenSpaceError: Number.isFinite(plan.maximumScreenSpaceError) ? plan.maximumScreenSpaceError : 96, + maximumScreenSpaceError: Number.isFinite(plan.maximumScreenSpaceError) ? plan.maximumScreenSpaceError : 64, cacheBytes: TILESET_CACHE_BYTES, maximumCacheOverflowBytes: TILESET_CACHE_OVERFLOW_BYTES, }