2025/10/08
  add: get3DGroundAltitudeSync 可以直接抓某個經緯度的高
  add: highlightXY 在 3D 模式也可以使用  
2025/10/17
  add: dgMarker 增加 ondragstart  
2025/11/18
  add: set3DCesiumPath 可指定 cesium 來源目錄  
2025/11/20
  add: 3dtiles 增加 setFeatureClick  
  add: 3dtiles 增加 setFeatureHover
2025/12/10
  add: enable3DGroundVisibility 可以看到地底的東西
  add: disable3DGroundVisibility 停止看到地底的東西
  fix: removeItem 在 dgMarker 可以移除 Overlayer 類型
2025/12/19
  fix: kmz 如果多一層目錄，也可以正常抓到
  fix: 修正 jsZip 重複使用的問題
2025/12/22
  add: enable3DGoogleBuilding 開啟 Google 建物圖  
  add: disable3DGoogleBuilding 關閉 Google 建物圖  
  add: enable3DOsmBuilding 開啟 Osm 建物圖  
  add: disable3DOsmBuilding 關閉 Osm 建物圖  
2026/01/07
  fix: 3dtiles onload 功能  
2026/01/16
  add: 增加 2D 專用 dgWebGLPoint 類別
  add: dgWebGLPoint 增加 setXY getXY
  add: 3DFPSMode 防地板抖動，3DFPSMode 加上 stop function   
2026/01/20
  fix: 更新 get3DGroundAltitude callback 穩定性
  add: async get3DGroundAltitudeAsync 使用 await 取 lon、lat 高度
  add: 增加 isEnable3DGoogleBuilding 檢查是否有打開 Google 建物圖  
  add: 增加 isEnable3DOsmBuilding 檢查是否有打開 Osm 建物圖  
  fix: 修正 isEnabled3DTerrain 回應的狀況
  add: 增加 輸入 wktGetCenter string 取得中心點 x,y
  fix: 移除 openInfoWindow _startPopup 移除 autoPan，避免圖台、3D 畫面時飛來飛去
2026/01/21
  add: register_cesium_key 使用預設 Cesium ION Key
  add: enable3DGoogleBuilding 增加 options 參數 maximumScreenSpaceError，maximumMemoryUsage，onload  
  add: enable3DOsmBuilding 增加 options 參數 maximumScreenSpaceError，maximumMemoryUsage，onload
  add: _google_building 增加 setOpacity
  add: _google_building 增加 getOpacity  
  add: _osm_building 增加 getOpacity
  add: _osm_building 增加 getOpacity
2026/01/23
  fix: map__wedget 左側指南針背後 div 高度設為 height:80%
2026/01/26
  fix: gltf 參數 rotate 載入時直接生效
  fix: gltf onload 參數帶入本身  
2026/01/28
  add: set3DCamera 以取 get3DCamera 也可以寫回  
  fix: 3dtiles onload 在未看到也可以生效
  add: highlightXY 在 3D 時，支援 dgxyz
2026/02/05
  fix: enableEditor 修正 stop 事件
  fix: enableScaleRotate 修正右下旋轉小點的位置
  add: 更新 ol-ext 至 4.0.37
2026/02/23
  add: map._google_building.addClipGoogleByPolygon(wktStr) 可依 polygon 刪除 Google 建物
  add: map._google_building.removeClipGoogleByPolygon(clippingPolygon) 還原 Google 刪除的建物
2026/02/26
  add: enable3DCSModeCamera 可以鎖定使用者位置，只改變可視角度
  add: disable3DCSModeCamera 停止鎖定使用者可視角度
  add: set3DPitch 設定抬頭高度
  add: get3DPitch 取得抬頭高度
2026/03/06
  add: dg3D 3dtiles 增加 getData 取得 3dtiles 屬性與坐標
  add: dg3D 3dtiles setFeature 增加取得屬性資料  
  add: add3DGroundClassByWKT 增加挖地功能，使用 wktstr polygon 傳入
2026/03/11
  fix: map.easy3DMeasuring.isMesasuring -> isMeasuring 錯字
  add: map.easy3DMeasuring 可以區分要使用貼地測量，還是空間測量
  add: enable3DCSModeCamera 可以增加 opt baseSpeed 且用 wasd 移動位置 
2026/03/20
  add: dgMarker 增加 onmouseout 事件
  add: dgWKT 增加 setFeatureMouseOut (onmouseout) 事件 
2026/04/17
  add: map.addGroundOverlayQuad(imgUrl, wktStr) 支援 2D、3D 非矩形影像套疊
  add: map.removeGroundOverlayQuad(item) 移除非矩形影像套疊
  add: removeItem 增加支援 dggroundoverlayquad 類別
  fix: dgKml 支援 KMZ 與 gx:LatLonQuad 標籤
  fix: 強化 KML 在 3D 模式下的貼地效果 (altitudeMode: clampToGround)
  fix: enable3D 自動同步 2D 已掛載的 GroundOverlayQuad
2026/04/28
  fix: wmts 長久套三、四張以後變慢卡頓的問題  
2026/05/06
  fix: openInfoWindow 按 X 時，觸發 # bookmark 造成畫面跑版
2026/05/14
  add: dgMVT 支援 styleUrl、styleSource、styleJson、tileJson，可直接使用 Mapbox style 的 vector source 載入向量圖磚
  add: dgMVT 增加 symbolMode、keepSymbolLayerIds，可控制 Mapbox symbol layer 顯示，避免 OpenLayers 標籤爆量
  add: dgMVT 增加 declutter 參數，預設開啟 OpenLayers 文字與圖示避讓，改善 symbol layer 顯示效果
  add: dgMVT 增加 interactive、renderMode、renderBuffer、updateWhileAnimating、updateWhileInteracting 參數，預設 MVT 不參與 Easymap hit detect 以降低滑鼠移動卡頓
  add: dgMVT 增加 sync3D 參數，預設略過 OL-Cesium MVT 同步，避免切換 3D 時卡頓或噴錯
  fix: dgMVT 修正 _src / _url 不一致，讓 new dgMVT(url, ops) 可正常載入
  fix: dgMVT 預設樣式改為快取 ol.style.Style，降低向量圖磚 feature render 時重複建立樣式的成本
  fix: dgMVT 套用 Mapbox style 時保留 layers Array 結構，避免 ol-mapbox-style 發生 t.slice is not a function
  fix: Easymap pointermove 遇到第三方 feature 無 _easymapClass 時不再因 toLowerCase 噴錯
  fix: 3D enable 後套用穩定相機參數，降低 inertia 並限制 zoom distance，改善滑鼠操作突然亂飛
  fix: enable3DFPSMode 落地後加入地面高度 deadband、取樣節流與鎖地判斷，降低 3D Tiles / 地形 LOD 高度微跳造成的人物抖動
  fix: enable3DFPSMode 啟動時關閉 Cesium 原生 collision detection，避免與 FPS 自訂鎖地邏輯互相拉扯造成原地抖動；關閉 FPS 時會還原原設定
  fix: enable3DFPSMode 站穩且未移動時不再每幀 camera.setView，避免 FPS 鎖地與 Cesium 地形修正互相覆寫造成微抖
  fix: enable3DFPSMode 坡面移動時地面高度改用上坡/下坡速度限制跟隨，降低地形 LOD 高度跳動造成的小山坡抖動
  fix: enable3DFPSMode 地形坡面加入地面安全高度，並避免落地後把 Cesium collision 推高的相機再壓回較低高度造成沉地抖動
  fix: enable3DFPSMode 原地站立時固定相機高度且不再觸發 camera.setView，避免靜止狀態仍被地形高度校正造成抖動
  add: demo.html 增加 3D、地形、KMZ、大量 WKT 分批載入、輕量 MVT、dgSource VectorTile 對照測試
  fix: Easymap loader 支援 _t 參數傳遞到 7/dg.js 與 7/easymap.js，方便測試頁更新快取
  fix: OL-Cesium 初始化時指定 requestWebgl1 並關閉 orderIndependentTranslucency，避開部分 Cesium WebGL2 shader 編譯錯誤
  note: OL10 WebGLVectorTileLayer 可列為 MVT 效能支線評估，但 OL-Cesium 2D/3D 切換仍為核心需求，升級前必須先驗證 olcs 相容性
2026/05/15
  add: openInfoWindow_setXY 可直接設定 infoWindow 位置
  add: isOpenInfoWindowOpen 可檢查是否開啟 infoWindow
2026/05/25
  add: get3DScene 可取得 OL-Cesium Cesium scene，方便外部整合 3D Tiles、terrain 與 imagery layer
  add: get3DImageryLayers 可取得 3D 模式 globe.imageryLayers，方便外部同步或切換 3D 底圖
  add: get3DViewer 回傳資料補上 imageryLayers
  fix: dgSource WMTS transparent 參數支援 boolean true 與字串 true，避免透明設定被誤判
  fix: dgSource Tile/WMTS 套用 opacity 參數，避免自訂透明度在 3D/2D 底圖同步時失效
2026/05/29
  add: dgWKT 支援 zoomScale / zoomVisible，可讓 Text 與 Image 依 zoom level 縮放，並可設定低於或高於指定 zoom 隱藏
  add: dgWKT 增加 setZoomScale / setZoomVisible / clearZoomScale / clearZoomVisible 全域方法，方便整個 WKT 物件套用同一組規則
  add: appjs 元件 dgWKT 區新增「dgWKT 字體圖示隨畫面縮放」範例，示範 style_setting 與全域方法兩種寫法
  note: 未設定 zoomScale / zoomVisible 時維持既有行為，不影響舊程式
2026/08/11
  fix: Cesium 1.141 / 1.142 預設使用 WebGL2，避免被強制 WebGL1 時發生新版 GLSL shader 編譯錯誤
  add: enable3D 支援 enable3D({ webgl: 'auto' | 'webgl1' | 'webgl2' }, callback)，既有 enable3D(callback) 相容不變
  fix: easymap_lite 指定 set3DCesiumPath 後可沿用既有動態載入流程，不會誤判 Cesium 尚未載入
2026/08/12
  add: setBasemapOpacity(opacity) 可設定主底圖透明度（0~1）
  add: getBasemapOpacity() 可取得主底圖目前透明度
  fix: switchMap / switchMapType 切換底圖後會沿用目前透明度；OpenLayers 與 MapLibre runtime 均支援
  note: 多圖台防閃爍所需的 _getById clone 行為維持不變
  add: EasymapDev/build_lite.bat 可從任意工作目錄重編 Lite；輸出檔遇 Windows 暫態 lock 時會自動重試三次
2026/08/14
  add: dgSource('WMTS', options) 增加 render3D: 'auto' | 'cesium' | 'olcs'；標準 EPSG:3857 / EPSG:4326 WMTS 在 3D 預設直接使用 Cesium WebMapTileServiceImageryProvider
  fix: 3D 原生 WMTS 與 2D OpenLayers _instance 分離維護，既有 addItem / switchMap / setOpacity / setBasemapOpacity / removeItem 語法相容不變
  fix: serverResolutions、非標準矩陣或不支援 URL 設定會安全回退 OL-Cesium；強制 cesium 時會明確略過，避免悄悄走回舊路徑
  fix: 3D 啟用、關閉、切換底圖、群組圖層、移除後重開均會同步清理或重掛原生 imagery layer，避免殘留或重複掛載
  add: EasymapDev/tests/manual/native-3d-wmts.html 提供 OL-Cesium / Cesium 原生 WMTS 雙展示驗證頁
  note: 實際 WMTS 若未提供 CORS，需由服務端開放或設定既有 proxy；SDK 不會繞過瀏覽器同源限制
2026/08/19
  add: dgWKT setFeatureHover 第 5 參數新增 2D／3D 多點 context，同一 owner 可一次取得全部重疊 hits
  fix: dgWKT mouseout 改以 owner 追蹤，同 owner 重疊點之間移動不再閃爍
  fix: 3D dgWKT hover 使用單一 Cesium drillPick handler，切換 2D／3D 時會確實清理且不累積 callback
  note: 既有 hover 前四參數、mouseout 前兩參數、click、popup 與非 dgWKT 圖層行為保持相容
2026/08/31
  release: Full SDK version_full 更新為 7.1.16_2026-08-31
  add: dg3D('gltf') 支援 playAnimation、pauseAnimation、resumeAnimation、setAnimationSpeed、onAnimationReady 公開動畫控制；ready 前指令會依 FIFO 套用
  note: 未指定 autoPlay 時維持既有 glTF 全部動畫 addAll() 行為；可用 autoPlay、animationLoop、animationMultiplier 覆寫
  fix: 已載入 glTF 的 setScale 只更新 scale、不再誤寫 z；dg3DLabelLine 相容 Cesium class constructor
  note: 3D 需由呼叫端提供可載入、具 CORS 的 Cesium runtime 與 GLB；SDK 不複製或升級外部 Cesium 資產
2026/09/05 15:22 +08:00
  release: Full SDK version_full 更新為 7.1.17_2026-09-05_15-22（7117 測試版）
  update: OpenLayers 6.15.1 -> 10.10.0、OLCS 2.23.1、proj4 2.22.0、Cesium 1.144.0；ol-ext 4.0.38、ol-mapbox-style 13.4.3
  fix: dgWebGLPoint 相容 OL 10 flat style，保留既有 symbol 設定入口；移除時釋放 WebGL 資源
  fix: ArcGIS／Rex MVT 使用套件內新版樣式解析器；OLCS proxy 改用 olcs_proxy
  fix: dgWKT setClusterDistance([distance, minDistance]) 在加入前設定及圖層重建時正確保留第二個值，包含 0
  fix: OLCS 沿用動態載入的 window.Cesium，避免重複打包 Cesium
  note: 本次 Full 包含 Cesium 1.144.0；部署需配套更新 Cesium.js、Workers、Assets、Widgets 與授權檔，不能只更新 easymap.js
  note: 快速 2D／3D 切換曾偶發相機落地下，仍待追蹤；混合點線面 KML cluster 與蜘蛛展開移除殘留尚待修正
2026/09/06
  security: loader 子資源使用固定版本 7.1.17_20260906，不再將頁面 _t 參數寫入 HTML
  security: 編譯時移除 Cesium 官方預設 ion token；保留既有 register_cesium_key() 註冊方式
  build: Cesium token 替換改以同版本發佈檔確認，結構或匹配數不符時編譯失敗
  compat: AJAX 相容層與 MapLibre runtime 的 open 方法名稱沿用字串編碼再解碼呼叫，保留 GET／POST 與回呼契約；屬掃描相容性處理，非接收端 CSRF 防護
  build: 上述兩個 runtime 改由 EasymapDev/src/runtime 維護，Full build／watch 自動同步發佈副本
  add: WMTS 預設 autoCapabilities:true，自動取得有效範圍及缺少的格式／樣式；明確設定優先，失敗沿用原圖源，可設 false 停用
2026/09/09
  perf: dgWKT 未註冊 hover 時略過滑鼠移動命中偵測；保留點選、群聚與加入後設定 hover 的既有行為
  perf: 拖曳、縮放動畫期間暫停 hover 命中偵測，繪圖指標處理仍保留

2026/09/18 14:41 +08:00
  release: Full SDK version_full 更新為 7.1.17_2026-09-18_14-41
  fix: dgMarker 與 dgWKT 的 Point／MultiPoint 預設以 relativeToGround 顯示，預設抬高 15m；線、面維持 clampToGround
  add: dgMarker／dgWKT 新增 setAltitudeMode、getAltitudeMode、setTerrainOffset、getTerrainOffset、setAlwaysVisible、getAlwaysVisible
  note: setAlwaysVisible(true) 僅對該 icon 設定 Cesium disableDepthTestDistance: Infinity，不改全域 terrain depth test；dgMarker.setZ 維持 absolute-height 語意

2026/09/18 18:16 +08:00
  release: Full SDK version_full 更新為 7.1.17_2026-09-18_18-16
  fix: 舊式 dgPolyline、dgPolygon、dgCurve 與 box 繪圖在 3D 預設寫入 clampToGround，讓 OLCS 以貼地 primitive 顯示，避免 terrain 遮蔽零高線面

2026/09/18 18:40 +08:00
  release: Full SDK version_full 更新為 7.1.17_2026-09-18_18-40
  fix: 舊式 dgPolyline／dgPolygon／dgCurve／box 的 [0, 0] 實線 sentinel 轉為無 dash style；避免 OLCS 誤建零長度 PolylineDash material 而使貼地線在 3D 消失，真正虛線陣列維持不變
  fix: dgWKT.refresh() 會通知 feature、VectorSource 與 layer，直接修改 getStyle() 後可在 2D 立即重繪，並讓 OLCS 重建對應 Cesium primitive；加入前呼叫為安全 no-op，回傳 dgWKT 供鏈式使用
  add: EasymapDev/tests/manual/terrain-draw-refresh-7117.html 提供舊式貼地線與 dgWKT refresh 的 2D／3D 實頁驗收
  release: v=maplibre 與 v=7 loader 的子資源 cache-buster 同步為 7.1.17_20260918，不再接受查詢參數控制子資源版本

2026/10/14 10:22 +08:00
  release: Full SDK version_full 更新為 7.1.17_2026-10-14_10-22；Full／Lite loader 固定 cache-buster 同步為 7.1.17_20261014
  upgrade: Cesium 固定升至 1.146.0，core 0.1.0／engine 26.4.0／widgets 16.3.0；Full 與 CesiumEngine 同版，補齊 Full ThirdParty codecs 並移除舊版生成 Worker
  add: 提供獨立 CesiumEngine 選配，保留 window.Cesium／OLCS 契約，使用 set3DCesiumPath 指向 engine-only 成果；既有 Full 預設 Viewer 載入契約維持相容
  fix: engine-only 避開 Viewer widgets／Knockout 的 JavaScript 動態執行初始化；3D document 改採 wasm-unsafe-eval，不需開放 JavaScript unsafe-eval；仍須依案場配置 script-src／worker-src 的來源與 blob:
  fix: engine-only 同站內建 module Worker 使用 blob 啟動器繼承建立頁 CSP，避免靜態 Worker strict header 阻擋該頁已允許的 Wasm；錯誤、首個回覆及 terminate 均清理 blob URL，自訂 Worker URL／prefix 維持原路徑
  compat: 跨站 Cesium Worker 沿用上游分支；CORS 仍需由資源服務端正確設定，並配合 CSP 來源 allowlist，SDK 不繞過瀏覽器同源限制；必須完整搬移 CesiumEngine 的 Workers／Assets／ThirdParty，不混用其他版本
  compat: engine-only 明確使用 core 正式匯出；Fortify 九處 nullable 欄位／HTTP method 轉換沿用至新版三個固定 Worker 資產（2＋4＋3），保留原值與行為及漂移檢查，非密碼保護、CSRF 防護或安全修復；新版仍需 Fortify 重掃
  note: 本機既有證據涵蓋 Scene、WKT／marker、合成地形、Draco 初始化及同站／子路徑／跨 origin 模擬；不等於所有 codecs、真實模型／3D Tiles、正式地形或 IIS／CDN／production 驗收，Viewer／3D 鷹眼不適用 engine-only
