|
|
@@ -61,6 +61,7 @@ import { createRegionLoadingController, contentAdmission } from './regionLoading
|
|
|
import { hasVisibleTileCoverage } from '../domain/tileCoverage.js'
|
|
|
import { clampResolution, sameResolution } from '../domain/renderResolution.js'
|
|
|
import { removeSceneTileset } from './tilesetCleanup.js'
|
|
|
+import { createOverlayProvider } from './overlayImagery.js'
|
|
|
const regionControllers = new WeakMap()
|
|
|
// 票 47:动效的**相位与映射**同样在 domain(纯函数,可跨时间采样断言);
|
|
|
// 本层只把相位写成 billboard 的 scale/alpha/rotation。
|
|
|
@@ -410,16 +411,6 @@ export function applyMotionResolution(viewer, moving) {
|
|
|
return resolutionControllerFor(viewer)?.setMoving(moving === true) ?? false
|
|
|
}
|
|
|
|
|
|
-/** 叠加影像(票 21):本地精细切片画在底图之上,URL 模板里可用 `{reverseY}` 表示 TMS 的 y。 */
|
|
|
-function createOverlayProvider(overlay) {
|
|
|
- const options = { url: overlay.url }
|
|
|
- if (Number.isInteger(overlay.minimumLevel)) options.minimumLevel = overlay.minimumLevel
|
|
|
- if (Number.isInteger(overlay.maximumLevel)) options.maximumLevel = overlay.maximumLevel
|
|
|
- if (overlay.bounds) options.rectangle = Rectangle.fromDegrees(overlay.bounds[0], overlay.bounds[1], overlay.bounds[2], overlay.bounds[3])
|
|
|
- if (overlay.credit) options.credit = overlay.credit
|
|
|
- return new UrlTemplateImageryProvider(options)
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* 批量采样真实地表高程(票 34 的建模用途):一次请求把整张网格取回来,
|
|
|
* 比逐点调 `sampleTerrainHeight()` 快得多(逐点会重复拉同一批瓦片)。
|
|
|
@@ -546,7 +537,7 @@ export function setCameraAltitude(viewer, altitudeM) {
|
|
|
export function applyOverlays(viewer, overlays) {
|
|
|
const handles = []
|
|
|
for (const overlay of overlays || []) {
|
|
|
- const layer = new ImageryLayer(createOverlayProvider(overlay))
|
|
|
+ const layer = new ImageryLayer(createOverlayProvider(overlay, { UrlTemplateImageryProvider, Rectangle }))
|
|
|
viewer.imageryLayers.add(layer)
|
|
|
handles.push(createOverlayHandle(layer))
|
|
|
}
|