config.example.json 6.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. {
  2. "_readme": [
  3. "驾驶舱部署配置模板。用法:复制成同目录的 config.json 再按环境填写 —— config.json 不入库(见根 .gitignore)。",
  4. "分层覆盖顺序(后者覆盖前者):内置默认 → 构建期 VITE_COCKPIT_* → 本文件 → 宿主注入的 globalThis.__COCKPIT_CONFIG__。",
  5. "启用本文件(默认不探测,免得每页刷 404):宿主页加一行 window.__COCKPIT_CONFIG_URL__ = 'auto',或构建期设 VITE_COCKPIT_CONFIG_URL=auto(也可以给绝对 URL 从后端拉)。",
  6. "dataSource 默认 mock:只有显式写 real 才会请求真实后端,mock 与真接口走同一个适配层(services/cockpitApi.js)。",
  7. "api.token / ws.token 是给开发与联调用的只读令牌;生产环境应由网关/反向代理在转发时补 Authorization 头,这里留空即可。",
  8. "本项目优先用内网离线数据:底图默认 natural-earth(Cesium 自带离线影像,无需账号/外网/密钥)。在线源(tianditu 需 tk、arcgis-imagery 免 key)只作为可选项。",
  9. "map.basemap.source 取值:none(不配底图)/ natural-earth(离线,推荐)/ xyz(任意 {z}/{x}/{y} 模板,本地或自建瓦片)/ tianditu(需 tk)/ arcgis-imagery(在线,免 key)。",
  10. "map.terrain.url 指向量化网格 DEM 目录(内含 layer.json);map.overlays[] 叠本地精细影像(TMS 用 {reverseY},bounds 填数据实际范围)。",
  11. "map.tilesets[] 是 3D Tiles / 倾斜摄影入口,每项一个 tileset.json 的 URL(没有根 tileset.json 的数据先别填;详见 docs/cockpit-deployment.md)。可选 maximumScreenSpaceError 控制几何误差,maximumDistance 控制批次距离剔除,loadDistance 控制批次懒加载距离,eager=false 可避免启动时初始化该批次;模型量大时优先拆成带 viewerRequestVolume 的小瓦片,远景粗模应与精模共用 GIS 足印,避免用道路填充模型代替建筑位置;运行时按距离加载并串行等待内容处理。",
  12. "map.ui.debug 控制界面形态:null(默认)= 跟随构建模式(开发构建显示诊断信息、生产构建自动收敛成干净形态);写 true 可在生产包里临时打开诊断读数。",
  13. "map.viewMode.pipeline 可调管线视图的倾角/距离系数/地形与模型的半透明程度。",
  14. "map.primaryArea.bounds 是主场景区矩形 [西, 南, 东, 北](度),与 map.overlays[].bounds 同口径;顺序必须自己写好(west<east、south<north),运行时不翻转。不填或顺序非法 → 区域限位与自建雾气整体关闭,引擎浮标如实写明原因。下面的坐标是本部署(沅陵县城)的契约示例,换部署请按自己的数据重算。",
  15. "map.fog 是区内视距雾(只在主场景区内生效)。默认 18000 m 起雾、42000 m 完全遮蔽、#bdcdd6;色值必须是 #rrggbb,且正式色相要偏冷白灰、不得发绿(现场复核)。本模板里的 fadeInMs/fadeOutMs 与高度带是**代码默认(规格取向)**,不是某个部署的现场值 —— 现场按观感调好后请在自己那份 config.json 里覆盖,别改回本模板。altitudeFullM/altitudeZeroM 是相机高度收口的两端:相机高于后者时雾收到 0(否则高空时整个地球会被涂成雾色 —— 退出会「地球变白」)。**必须 altitudeZeroM > altitudeFullM**,写反等于关掉这层保护(配置层会报 issue,但不替你改值)。altitudeSlewMs 是这层收口的**时间限速**,保证雾不会「一瞬间产生或消失」(返回全球时相机 range 跨 1.6e6 倍,不加限速就会跳变)。enabled=false 可整级关掉这层效果(限位不受影响)。",
  16. "map.grade 是一张图整幅调色(科技蓝滤镜):常驻全屏处理级,在雾之后执行(雾出的白也被统一成冷蓝调)。saturation/brightness/contrast 是色彩学三系数(1 = 原样),tint 是 #rrggbb 目标色调、tintStrength 是阴影向它混合的上限(实际权重随暗部加深,高光几乎不动)。刻意**不做** hue-rotate 双色:状态点的红/绿是第一线索,色相顺序不能动。enabled=false 可整级关掉;脏值一律退回代码默认。",
  17. "map.handover 是粗→精影像交接:全球/引导态隐藏精细影像,进区后等雾形成保护且瓦片可显示才渐显,返回反向交接(影像先收、雾后撤)。fadeMs 是渐显/收起时长(现为 380 ms:雾是距离雾、盖不住屏幕中心的脚下街区,渐显期间中心是「粗糙底图(陆地偏绿)↔ 精细影像」的混合,窗口越长那段绿越明显,故调短);minEdgeOcclusion 是相机到影像边处要求的雾遮蔽率(0–1,与 map.fog 的距离端点同源);requireTilesLoaded=false 可放宽『等瓦片』这一条。enabled=false 则精细层常显(回到交接之前的行为)。绝不承诺『边缘已被遮住』,那段观感请在真实画面上验收。",
  18. "map.locate.point/device 可覆盖完整定位视角的 heading/pitch/range(米);缺省点位 0/-55/500、设备 0/-55/150。设备档供后续设备联动票消费。",
  19. "map.cesium.enabled=false 可以让中央一张图退回临时影像兜底;map.cesium.baseUrl 只在把 Cesium 静态资源放到别处时才填(需绝对 URL)。",
  20. "ws.url 供票 15 的状态推送使用。"
  21. ],
  22. "version": 1,
  23. "dataSource": "mock",
  24. "api": {
  25. "baseUrl": "",
  26. "token": ""
  27. },
  28. "ws": {
  29. "url": "",
  30. "token": ""
  31. },
  32. "map": {
  33. "basemap": {
  34. "source": "natural-earth",
  35. "url": "",
  36. "subdomains": [],
  37. "minimumLevel": null,
  38. "maximumLevel": null,
  39. "credit": ""
  40. },
  41. "tianditu": {
  42. "token": "",
  43. "layer": "img"
  44. },
  45. "terrain": {
  46. "url": "",
  47. "requestVertexNormals": true
  48. },
  49. "overlays": [],
  50. "tilesets": [],
  51. "overlap": {
  52. "maxFan": 10
  53. },
  54. "locate": {
  55. "point": { "heading": 0, "pitch": -55, "range": 500 },
  56. "device": { "heading": 0, "pitch": -55, "range": 150 }
  57. },
  58. "primaryArea": {
  59. "bounds": [110.328749941417, 28.3917230659234, 110.465779226663, 28.4913038992907]
  60. },
  61. "fog": {
  62. "enabled": true,
  63. "startDistance": 18000,
  64. "endDistance": 42000,
  65. "color": "#bdcdd6",
  66. "fadeInMs": 800,
  67. "fadeOutMs": 400,
  68. "altitudeFullM": 20000,
  69. "altitudeZeroM": 42000,
  70. "altitudeSlewMs": 400
  71. },
  72. "handover": {
  73. "enabled": true,
  74. "fadeMs": 380,
  75. "minEdgeOcclusion": 0.9,
  76. "requireTilesLoaded": true
  77. },
  78. "grade": {
  79. "enabled": true,
  80. "saturation": 0.82,
  81. "brightness": 0.96,
  82. "contrast": 1.08,
  83. "tint": "#2fa8ff",
  84. "tintStrength": 0.18
  85. },
  86. "ui": {
  87. "debug": null
  88. },
  89. "cesium": {
  90. "enabled": true,
  91. "baseUrl": ""
  92. }
  93. }
  94. }