Global

Members

(constant) CONTOUR_AGG_SRC

Description:
  • 渲染等值線圖層(聚合渲染: 全部 contourSets 之色帶併入單一 source + fill/line 各一層, 含圖例生成)。 樣式 data-driven 放 feature properties; hover 樣式切換(changeStyleWhenHover)改以 feature-state 驅動: paint 以 ['feature-state','hover'] case 切換基礎/hover 值, 游標下所有色帶(巢狀命中)同時高亮(對齊逐組時代行為); 不啟用 hover 樣式之組, hover 值即基礎值(case 恆等, 行為不變)。 feature 帶 _kcs/_kps, click/hover 反查 store 最新資料; 跨組移動由 onMove 驅動 tooltip 切換。

Source:

渲染等值線圖層(聚合渲染: 全部 contourSets 之色帶併入單一 source + fill/line 各一層, 含圖例生成)。 樣式 data-driven 放 feature properties; hover 樣式切換(changeStyleWhenHover)改以 feature-state 驅動: paint 以 ['feature-state','hover'] case 切換基礎/hover 值, 游標下所有色帶(巢狀命中)同時高亮(對齊逐組時代行為); 不啟用 hover 樣式之組, hover 值即基礎值(case 恆等, 行為不變)。 feature 帶 _kcs/_kps, click/hover 反查 store 最新資料; 跨組移動由 onMove 驅動 tooltip 切換。

(constant) GEOJSON_AGG_PTS_SRC

Description:
  • 渲染 GeoJSON 圖層(聚合渲染: 全部 geojsonSets 拆分後併入 3 個 source + 4 層, 樣式 data-driven)。 每組 geojson 經 splitAndProcGeoJSON 拆為 points/lines/polygons, 各自併入全域聚合 source; feature 帶組索引 _kgj, click/hover 以其反查 store 最新資料; 跨組移動由 onMove 驅動 tooltip 切換。

Source:

渲染 GeoJSON 圖層(聚合渲染: 全部 geojsonSets 拆分後併入 3 個 source + 4 層, 樣式 data-driven)。 每組 geojson 經 splitAndProcGeoJSON 拆為 points/lines/polygons, 各自併入全域聚合 source; feature 帶組索引 _kgj, click/hover 以其反查 store 最新資料; 跨組移動由 onMove 驅動 tooltip 切換。

(constant) KEY_HOVER_MANAGER

Description:
  • 集中式圖層 hover 管理器

    maplibre 對「帶 layerId 的委派事件」之內部實作, 是每個 listener 於每次 mousemove 各自執行一次 queryRenderedFeatures 命中測試(單次約 5ms 基礎開銷); 互動圖層一多(如 22 層 × enter/leave = 44 個 委派 listener)單次滑鼠移動即阻塞主執行緒 200ms+。本管理器全 map 僅掛一個 mousemove listener, 每次滑鼠移動最多執行一次 queryRenderedFeatures(帶全部已註冊圖層), 依命中差集對各圖層分發 enter/leave, 語意與原委派事件相同(enter 事件帶 features, 由上而下排序)。並加兩道防護:

    • 拖曳中(originalEvent.buttons > 0)與地圖動畫中(map.isMoving())不做命中測試——拖曳體驗優先, hover 狀態暫凍結
    • 命中測試節流(leading+trailing, 間隔 100ms)——高頻 mousemove 合併為一次查詢

    注意: 每個 layerId 僅支援一組 handler(重複註冊為覆蓋語意, 與原生 map.on 可疊加多 listener 不同)。 選配第五參數 onMove: 該層「持續 hover 中」時分發(payload 同 enter, 含 features), 供聚合層(單層多組 feature)偵測跨組移動; 未傳者行為不變。

Source:

集中式圖層 hover 管理器

maplibre 對「帶 layerId 的委派事件」之內部實作, 是每個 listener 於每次 mousemove 各自執行一次 queryRenderedFeatures 命中測試(單次約 5ms 基礎開銷); 互動圖層一多(如 22 層 × enter/leave = 44 個 委派 listener)單次滑鼠移動即阻塞主執行緒 200ms+。本管理器全 map 僅掛一個 mousemove listener, 每次滑鼠移動最多執行一次 queryRenderedFeatures(帶全部已註冊圖層), 依命中差集對各圖層分發 enter/leave, 語意與原委派事件相同(enter 事件帶 features, 由上而下排序)。並加兩道防護:

  • 拖曳中(originalEvent.buttons > 0)與地圖動畫中(map.isMoving())不做命中測試——拖曳體驗優先, hover 狀態暫凍結
  • 命中測試節流(leading+trailing, 間隔 100ms)——高頻 mousemove 合併為一次查詢

注意: 每個 layerId 僅支援一組 handler(重複註冊為覆蓋語意, 與原生 map.on 可疊加多 listener 不同)。 選配第五參數 onMove: 該層「持續 hover 中」時分發(payload 同 enter, 含 features), 供聚合層(單層多組 feature)偵測跨組移動; 未傳者行為不變。

(constant) KEY_ICON_FP

Description:
  • 將 base64/URL 圖片載入並以指定大小註冊到地圖 sprite atlas

Source:

將 base64/URL 圖片載入並以指定大小註冊到地圖 sprite atlas

(constant) KEY_SETS_STORE

Description:
  • 各型別「最新一輪 render 的正規化資料」存放處(掛於 map 實例上)。 事件 handler 於事件觸發時來此查最新資料, 而非使用建層當時閉包捕捉的物件—— 否則 runtime 變更資料/樣式後(source 已存在僅 setData), 回呼會帶到舊值。

    store 完整形狀(新增欄位請同步維護此清單): polylineSets / polygonSets / geojsonSets / contourSets - 各型別最新正規化陣列 contourBands - { [kcs]: 色帶陣列 } 等值線各組最新色帶(含顏色增補) pointRenderSeq - { [srcId]: Number } 點圖層每 source 的 render 序號(兼「已知組」名冊, 供過期清理) pointSetsPrev - { [kid]: 正規化組 } 點圖層上一輪已套用資料(供逐組差異跳過) imageSetsPrev - { [kid]: 正規化組 } 影像圖層上一輪已套用資料(供逐組差異跳過, 免重載圖片) polygonGeomPrev - { [kpg]: { lls, geometry } } 聚合多邊形各組上一輪 latLngs 與其幾何(供純樣式變更時重用幾何) 代價: 額外常駐一份 latLngs 參考與幾何結果, 大量座標場景記憶體約增一份幾何量 polygonHoverK - Number|null 聚合多邊形目前 hover 之組索引(供跨組移動偵測) polylineHoverK - Number|null 聚合折線目前 hover 之組索引(供跨組移動偵測) geojsonHoverK - { [layerId]: Number } 聚合 GeoJSON 各互動層目前 hover 之組索引 contourHoverKcs - Number|null 聚合等值線目前 hover 之組索引(tooltip 用) contourHoverIds - Array 聚合等值線目前 hover 之 feature id 集合(feature-state 樣式用)

Source:

各型別「最新一輪 render 的正規化資料」存放處(掛於 map 實例上)。 事件 handler 於事件觸發時來此查最新資料, 而非使用建層當時閉包捕捉的物件—— 否則 runtime 變更資料/樣式後(source 已存在僅 setData), 回呼會帶到舊值。

store 完整形狀(新增欄位請同步維護此清單): polylineSets / polygonSets / geojsonSets / contourSets - 各型別最新正規化陣列 contourBands - { [kcs]: 色帶陣列 } 等值線各組最新色帶(含顏色增補) pointRenderSeq - { [srcId]: Number } 點圖層每 source 的 render 序號(兼「已知組」名冊, 供過期清理) pointSetsPrev - { [kid]: 正規化組 } 點圖層上一輪已套用資料(供逐組差異跳過) imageSetsPrev - { [kid]: 正規化組 } 影像圖層上一輪已套用資料(供逐組差異跳過, 免重載圖片) polygonGeomPrev - { [kpg]: { lls, geometry } } 聚合多邊形各組上一輪 latLngs 與其幾何(供純樣式變更時重用幾何) 代價: 額外常駐一份 latLngs 參考與幾何結果, 大量座標場景記憶體約增一份幾何量 polygonHoverK - Number|null 聚合多邊形目前 hover 之組索引(供跨組移動偵測) polylineHoverK - Number|null 聚合折線目前 hover 之組索引(供跨組移動偵測) geojsonHoverK - { [layerId]: Number } 聚合 GeoJSON 各互動層目前 hover 之組索引 contourHoverKcs - Number|null 聚合等值線目前 hover 之組索引(tooltip 用) contourHoverIds - Array 聚合等值線目前 hover 之 feature id 集合(feature-state 樣式用)

(constant) POLYGON_AGG_SRC

Description:
  • 渲染多邊形圖層(聚合渲染: 全部 polygonSets 併入單一 source + fill/line 各一層, 樣式 data-driven)。 maplibre 每圖層每幀有固定開銷, 逐組建層在大量組數時(如數百鄉鎮)層數爆量致拖曳卡頓; 聚合後恆為 2 層, 樣式放 feature properties, 資料/樣式變更皆走單次 setData。 click/hover 以 feature 的 _kpg 反查 store 最新資料; 跨組移動由 onLayerHover 的 onMove 驅動 tooltip 切換。

Source:

渲染多邊形圖層(聚合渲染: 全部 polygonSets 併入單一 source + fill/line 各一層, 樣式 data-driven)。 maplibre 每圖層每幀有固定開銷, 逐組建層在大量組數時(如數百鄉鎮)層數爆量致拖曳卡頓; 聚合後恆為 2 層, 樣式放 feature properties, 資料/樣式變更皆走單次 setData。 click/hover 以 feature 的 _kpg 反查 store 最新資料; 跨組移動由 onLayerHover 的 onMove 驅動 tooltip 切換。

(constant) POLYLINE_AGG_SRC

Description:
  • 渲染折線圖層(增量更新)

Source:

渲染折線圖層(增量更新)

defBaseMaps

Description:
  • defBaseMaps.mjs 預設底圖與疊圖清單, 供組件預設值使用, 亦可由外部直接引用或作為自訂清單之基礎

Source:

defBaseMaps.mjs 預設底圖與疊圖清單, 供組件預設值使用, 亦可由外部直接引用或作為自訂清單之基礎

defTerrainMap

Description:
  • defTerrainMap.mjs 預設3D地形資料源設定, 供組件預設值使用, 亦可由外部直接引用或作為自訂設定之基礎

Source:

defTerrainMap.mjs 預設3D地形資料源設定, 供組件預設值使用, 亦可由外部直接引用或作為自訂設定之基礎

(constant) maplibreVersion

Description:
  • maplibreWorkerInline.mjs maplibre-gl 之 worker 自足打包內嵌字串(機器產製, 請勿手改)

    來源: ./node_modules/maplibre-gl/dist/maplibre-gl-worker.mjs(已打包為無外部 import 之自足單檔) 產製: node toolg/gDistRollupMaplibreGlWorker.mjs maplibre-gl 版本: 6.14.0

    why: maplibre 6.x 起 worker 為外部檔案, 打包器無法代為處理; 本套件改以 Blob 於執行期載入, 使使用端無須另行部署 worker 檔案或設定 setWorkerUrl。詳見 toolg/gDistRollupMaplibreGlWorker.mjs

Source:

maplibreWorkerInline.mjs maplibre-gl 之 worker 自足打包內嵌字串(機器產製, 請勿手改)

來源: ./node_modules/maplibre-gl/dist/maplibre-gl-worker.mjs(已打包為無外部 import 之自足單檔) 產製: node toolg/gDistRollupMaplibreGlWorker.mjs maplibre-gl 版本: 6.14.0

why: maplibre 6.x 起 worker 為外部檔案, 打包器無法代為處理; 本套件改以 Blob 於執行期載入, 使使用端無須另行部署 worker 檔案或設定 setWorkerUrl。詳見 toolg/gDistRollupMaplibreGlWorker.mjs

Methods

applyBaseMaps(map, baseMaps)

Description:
  • 將底圖配置套用到 map(建立 raster/vector/wms/style source 與 layer) style 型別讀取 preloadBaseMapStyles 之快取, 未命中即跳過該條目(由呼叫端於預載完成後補套)

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

baseMaps Array

底圖配置陣列

applyProjection(map, projection)

Description:
  • 切換 globe/mercator 投影

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

projection String

'' | 'globe' | 'mercator'('' = auto 模式)

applyTerrain(map, terrainMap, trackedLayerIds)

Description:
  • 套用 3D 地形(清除舊地形後重新設定)

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

terrainMap Object

地形配置物件

trackedLayerIds Array

追蹤的 layer ID(用於 hillshade 插入位置)

applyZoomRange(map, next)

Description:
  • 執行期變更圖台縮放範圍: maplibre 之 setMinZoom 拋錯當新 min 大於現行 max、setMaxZoom 拋錯當新 max 小於現行 min, 故先設不會與現行另一端衝突者; 範圍外之現行層級由 maplibre 自行拉入範圍(同步觸發 zoomend/moveend)

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

next Object

computeZoomRange 之結果

buildContourLegend(data, contourSet) → {Array}

Description:
  • 等值線圖例生成

Source:
Parameters:
Name Type Description
data Object
contourSet Object

含 legendNumDig, legendTextFormater, legendTextExtra

Returns:

legend(已 reverse,由大到小)

Type
Array

buildItemsList(imageSets, pointSets, polylineSets, polygonSets, geojsonSets, contourSets) → {Array}

Description:
  • 建立統一的圖層列表(供圖層顯隱面板使用)

Source:
Parameters:
Name Type Description
imageSets Array
pointSets Array
polylineSets Array
polygonSets Array
geojsonSets Array
contourSets Array
Returns:

items - [{ name, msg, order, visible, updatePath }]

Type
Array

buildPanelStyle()

Description:
  • 面板尺寸樣式輔助(純函式)

Source:

buildPolygonGeometry()

Description:
  • 將多個環座標(XOR 套疊結構)轉為 MapLibre GL 相容的 GeoJSON MultiPolygon 先試等價之快速路徑(單趟閉環+反轉),不成立才走 w-gis 之 XOR 管線。

Source:

calcPanToCenter(map, latLng, opt) → {Array|null}

Description:
  • 計算 panTo 偏移後的新中心座標

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

latLng Array

[lat, lng]

opt Object

{ ratioHorizontal, ratioVertical, funLatLng }

Returns:

新的 [lat, lng],或 null 表示不需移動

Type
Array | null

calcPolygonCenter(latLngs) → {Array|null}

Description:
  • 計算多邊形第一環重心座標

Source:
Parameters:
Name Type Description
latLngs Array
Returns:

[lat, lng]

Type
Array | null

calcPolylineCenter(latLngs) → {Array|null}

Description:
  • 計算折線的中間點座標

Source:
Parameters:
Name Type Description
latLngs Array
Returns:

[lat, lng]

Type
Array | null

clearTrackedByPrefix(map, prefix, trackedLayerIds, trackedSourceIds) → {Object}

Description:
  • 清除以指定前綴開頭的 layer 與 source

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

prefix String

前綴字串

trackedLayerIds Array

目前追蹤的 layer ID 陣列

trackedSourceIds Array

目前追蹤的 source ID 陣列

Returns:

更新後的追蹤陣列

Type
Object

computeBasicOpt(opt, currentZoom, currentCenter) → {Object}

Description:
  • 計算基本 opt 設定(zoom, minZoom, maxZoom, center, panelBackgroundColor 等)。對任何輸入皆回合法值且不拋錯(R13)

Source:
Parameters:
Name Type Description
opt Object
currentZoom Number
currentCenter Array
Returns:
Type
Object

computeClusterOpts(opt) → {Object}

Description:
  • 計算叢集化設定

Source:
Parameters:
Name Type Description
opt Object
Returns:
Type
Object

computePanelBaseMaps(opt, currentBaseMaps, currentTerrainMapTemp, currentBaseMapsDataTemp, defBaseMapsData, defTerrainMapData) → {Object}

Description:
  • 計算底圖面板配置

Source:
Parameters:
Name Type Description
opt Object

Vue component 的 opt prop

currentBaseMaps Array

目前 panelBaseMaps.baseMaps(用於保留已選底圖)

currentTerrainMapTemp Object

上次 terrainMap 快照(用於 diff)

currentBaseMapsDataTemp Array

上次底圖資料快照(用於 diff)

defBaseMapsData Array

預設底圖配置

defTerrainMapData Object

預設地形配置

Returns:
Type
Object

computePanelCompass3d()

Description:
  • 計算 3D 指北針面板配置

Source:

computePanelCompassRose(opt, uiResData) → {Object}

Description:
  • 計算羅盤圖標面板配置

Source:
Parameters:
Name Type Description
opt Object
uiResData Object
Returns:

panelCompassRose

Type
Object

computePanelItems()

Description:
  • 計算圖層顯隱面板配置

Source:

computePanelLabels()

Description:
  • 計算地圖資訊面板配置

Source:

computePanelLegends()

Description:
  • 計算圖例面板配置

Source:

computePanelScale()

Description:
  • 計算比例尺面板配置

Source:

computePanelZoom()

Description:
  • 計算縮放按鈕面板配置

Source:

computeZoomRange(opt) → {Object}

Description:
  • 正規化圖台縮放範圍(opt.minZoom、opt.maxZoom): 數字或數字字串依數值; 非數值/非有限視為未給用預設(0、22); 夾在 0~24; minZoom 大於 maxZoom 時忽略 minZoom(ignoredMin=true, 由呼叫端警告一次; 同圖磚 minzoom/maxzoom 之作法, maxZoom 為保護性欄位)。 範圍只交給地圖把關(R11), 元件側不另夾 opt.zoom

Source:
Parameters:
Name Type Description
opt Object
Returns:
Type
Object

countVisible(arr) → {Number}

Description:
  • 計算可見圖層數量(純函式)

Source:
Parameters:
Name Type Description
arr Array

含 visible 屬性的陣列

Returns:
Type
Number

createDirectionalPopup(map, lngLat, content, position, gap, extraOpts, anchorOffsetopt) → {maplibregl.Popup|null}

Description:
  • 建立方向性彈窗(支援 top/bottom/left/right + 二階段自動翻轉)

Source:
Parameters:
Name Type Attributes Default Description
map Object

MapLibre 地圖實例

lngLat Array

[lng, lat]

content HTMLElement

DOM 內容元素

position String

'top'|'bottom'|'left'|'right'

gap Number

與錨點的間距(px)

extraOpts Object

其他 Popup 選項

anchorOffset Array <optional>
[0,0]

額外偏移 [dx, dy](正x=右移,正y=下移)

Returns:
Type
maplibregl.Popup | null

createMap(container, opt) → {maplibregl.Map}

Description:
  • 建立 MapLibre 地圖實例

Source:
Parameters:
Name Type Description
container HTMLElement

地圖容器 DOM 元素

opt Object

Vue component 的 opt prop

Returns:
Type
maplibregl.Map

fastRingGroupToPolygons(src) → {Array|null}

Description:
  • 將「單一 XOR 群」(一組環)轉為 GeoJSON polygon 陣列 僅在該組環之 XOR 語意與 GeoJSON 環語意等價時才成立,不等價回傳 null。

    等價條件(全數滿足):

    1. 各環為 >= 3 點之點陣列且座標為有限數值
    2. 環內無自相交、環間無相交或接觸(8 字型環、部分重疊環、重複頂點之自我接觸環, polybool 會切分/做對稱差,快速路徑不會)
    3. 多環時,二者擇一: a. 全離散: 各環 bbox 兩兩不重疊 → 互不重疊環之 XOR 對稱差=聯集,各環為獨立 polygon (行政區飛地/離島常態;bbox 互斥本身即排除包含與相交) b. 首環 + 互不重疊之洞: 第 2 環起之 bbox 互不重疊(避免島中島三層套疊被誤當成洞) 且各自完全落在首環內 混合情形(部分洞/部分離散)回退慢管線
Source:
Parameters:
Name Type Description
src Array

環陣列 [ring][pt[lat, lng]]

Returns:

polygon 陣列(各元素為環陣列,座標已轉為 [lng, lat])或 null

Type
Array | null

findPointById(pointSets, targetId) → {Object}

Description:
  • 從 pointSets 中依 id 查找 point 資料

Source:
Parameters:
Name Type Description
pointSets Array
targetId String
Returns:
Type
Object

freezeCoordField()

Description:
  • 深度凍結「大量座標」欄位(points / latLngs),使 Vue 2 observe 直接跳過該子樹 Vue 2 之 observe() 對 !Object.isExtensible 者不遞迴、不掛 getter/setter, 萬點級資料存入 reactive data 之深走訪成本(數百 ms)因此免除。

    僅可用於「套件內外皆唯讀」之座標欄位:

    • 組物件本身不可凍結: syncSetsVisible / toggleItemVisible / modifyItemsVisible 會回寫 visible
    • contourSets 不可凍結: renderContourSets 會回寫 cs.legend 座標欄位來源為 processSetsChange 內 cloneDeep 之私有副本, 凍結不影響呼叫端原資料。
Source:

getBaseMapOpacity(bm) → {Number|null}

Description:
  • 疊加層(colorShade 空字串)透明度之單一擁有者(R14): 預設值與值域只在此決定, 渲染(vector/raster 建立與 paint 更新)與面板一律呼叫之。 bm.opacity 為數字或數字字串 → 夾在 0~1 之有限數(0 有效); 非數值/非有限(NaN、±Infinity、'abc'、布林、陣列…)視為未給 → vector 預設 0.8、其餘(raster/wms)預設 1; type 為 'style' 不支援整組透明度(各層自帶 opacity, 常為 zoom 表達式) → 回 null

Source:
Parameters:
Name Type Description
bm Object

底圖條目

Returns:
Type
Number | null

getContourColor()

Description:
  • 計算等值線色彩(基於 gradient 內插)

Source:

getMapObject(map) → {Object|null}

Description:
  • 取得 map 物件(包裝 panTo 使其相容 Leaflet 的 [lat,lng] 格式)。 以 Proxy 包裝而非改寫原 map 實例——就地替換 panTo 會污染共享實例, 使元件內部以原生 [lng,lat] 呼叫的平移被再翻轉一次(座標顛倒)

Source:
Parameters:
Name Type Description
map Object
Returns:
Type
Object | null

isBaseMapsPaintOnlyDiff(prev, next) → {Boolean}

Description:
  • 判斷新舊 baseMaps 是否「僅 paint 欄位(colorFillExtrusion/opacity)變更」。 true → 可只就地 setPaintProperty(updateBaseMapPaint), 無需重建底圖; false → 非僅 paint 變更, 由呼叫端再以 isBaseMapsStructuralDiff 判斷走增量或完整重套。

Source:
Parameters:
Name Type Description
prev Array

上次套用的 baseMaps

next Array

本次 baseMaps

Returns:
Type
Boolean

isBaseMapsStructuralDiff(prev, next) → {Boolean}

Description:
  • 判斷新舊 baseMaps 是否有「結構性變更」(新增/刪除/url/type/layer/layerType/colorShade 等)。 false → 僅順序/可見性/paint 差異, 可走增量(updateBaseMapsIncremental), 不重建、不重抓圖磚; true → 有結構性變更, 需完整重套 applyBaseMaps。

Source:
Parameters:
Name Type Description
prev Array

上次套用的 baseMaps

next Array

本次 baseMaps

Returns:
Type
Boolean

offDelegatedListenersByLayer(map, matchLayerId)

Description:
  • 反註冊委派 listeners 中綁定於符合條件 layer id 者(使註冊與圖層同壽命, 避免累積)。 注意: 依賴 maplibre 私有結構 map._delegatedListeners, 升級 maplibre 時須確認仍相容—— 故全 codebase 僅此一份實作, 各清理路徑共用。

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

matchLayerId function

(layerId) => Boolean

offLayerHover()

Description:
  • 反註冊圖層之 hover handler(圖層移除時呼叫, 使註冊與圖層同壽命)。 若移除當下該圖層為 hover 中, 先發 leave 還原 cursor/tooltip 再移除。

Source:

pointInRing(pt, ring)

Description:
  • 點是否在環(ring)內部(Ray Casting 演算法)

Source:
Parameters:
Name Type Description
pt Array

[lng, lat]

ring Array

[[lng, lat], ...]

preloadBaseMapStyles(baseMaps) → {Promise.<Number>}

Description:
  • 預先抓取 style 型別底圖的 style JSON 並快取(applyBaseMaps 為同步流程, 只讀快取)

Source:
Parameters:
Name Type Description
baseMaps Array

底圖配置陣列

Returns:

本次新載入成功的 style 數量, 0 代表全部已快取或無 style 型別(呼叫端無須補套, 避免無謂重建)

Type
Promise.<Number>

ptOnSeg()

Description:
  • 點 (rx,ry) 是否落在線段 (px,py)-(qx,qy) 上(含端點,需完全共線)

Source:

recheckSinglePopupDir(map, popup) → {maplibregl.Popup}

Description:
  • 偵測單一 popup/tooltip 的方向是否需要翻轉,若需要則重建

Source:
Parameters:
Name Type Description
map Object

MapLibre 地圖實例

popup maplibregl.Popup

目前的 popup 物件

Returns:
  • 原 popup 或翻轉後的新 popup
Type
maplibregl.Popup

renderImageSets(map, imageSets, tracked, callbacks)

Description:
  • 渲染影像圖層(kid 識別 + 逐組差異跳過)。 maplibre 的 image source 一源一張圖, 無法聚合; 但 updateImage 會觸發圖片重載, 故以逐組差異跳過使未變更組零觸碰(不 updateImage → 不重載/不閃爍), 並以 kid(選配 key, 未給退回索引)維持組身分, 免陣列位移造成全組重載。

Source:
Parameters:
Name Type Description
map Object
imageSets Array

已正規化的 imageSets(各組含 kid)

tracked Object

{ sourceIds, layerIds }

callbacks Object

{ getDisplayOrderByType(): Boolean }

renderPointSets(map, pointSets, clusterOpts, tracked, callbacks, iconDefault)

Description:
  • 渲染點圖層(circle + symbol,含叢集化;kid 識別 + 逐組差異跳過)

Source:
Parameters:
Name Type Description
map Object
pointSets Array

已正規化的 pointSets(各組含 kid)

clusterOpts Object

computeClusterOpts() 的回傳值

tracked Object

{ sourceIds, layerIds }

callbacks Object

{ registerIcon(key, src, w, h): Promise, onPointClick(ptData, psData, p, coords): void, onPointEnter(ptData, psData, p, coords): void, onPointLeave(): void, getPointData(kid, kpt): ptData, getPointSetData(kid): psData, getDisplayOrderByType(): Boolean, }

iconDefault Object

{ src, size, key }

resolveFeatureById(id, polylineSets, polygonSets) → {Object|null}

Description:
  • 解析 feature id 並取得對應資料(折線/多邊形)

Source:
Parameters:
Name Type Description
id String

例如 'polylineSet-0' 或 'polygonSet-0'

polylineSets Array
polygonSets Array
Returns:
Type
Object | null

ringBBox()

Description:
  • 環之 bbox:[minX, minY, maxX, maxY]

Source:

ringsHaveCrossing(rings) → {Boolean}

Description:
  • 一組(已閉合)環之間是否存在相交或接觸 「相交」含嚴格穿越(8 字型環、部分重疊環)與端點接觸(重複頂點、頂點壓線之退化環), 兩者 polybool 都會切分/重組,快速路徑不會,故一律視為不可走快速路徑。 以 x 方向掃描線 + y 方向 bbox 預篩把配對數壓到近線性,避免大環的 O(n^2) 爆炸; 段資料存平坦 TypedArray,免去每段一個物件的配置成本。 同環之相鄰段與閉環首尾段本就共端點,不計。

Source:
Parameters:
Name Type Description
rings Array

[[[x,y],...], ...] 各環首尾點相同

Returns:
Type
Boolean

setOverlayOpacity(map, baseMaps, idx, val)

Description:
  • 調整疊加圖層透明度

Source:
Parameters:
Name Type Description
map Object
baseMaps Array
idx Number
val Number | String

switchBaseMap(map, baseMaps, idx)

Description:
  • 切換底圖(radio 單選)

Source:
Parameters:
Name Type Description
map Object
baseMaps Array

panelBaseMaps.baseMaps(直接修改 visible 屬性)

idx Number

選中的底圖索引

toggleOverlayVisible(map, baseMaps, idx)

Description:
  • 切換疊加圖層可見性(checkbox)

Source:
Parameters:
Name Type Description
map Object
baseMaps Array
idx Number

tryBuildPolygonGeometryFast(lls) → {Object|null}

Description:
  • buildPolygonGeometry 之快速路徑:單趟迴圈完成「閉環 + 座標反轉」, 結構非預期或 XOR 語意不等價一律回傳 null 交回慢管線(polybool)處理。

    支援之輸入深度(與慢管線 toMultiPolygon 之判讀一致): 2 - [pt[lat,lng]] 單一 ringString 3 - [ring][pt] 一個 polygon 之環陣列(XOR 套疊) 4 - [polygon][ring][pt] multiPolygon;各 polygon 之環各自 XOR 後串接, 故逐 polygon 獨立判定等價性(跨 polygon 之環互不影響)

Source:
Parameters:
Name Type Description
lls Array

原始 latLngs(座標為 [lat, lng])

Returns:

MultiPolygon geometry 或 null

Type
Object | null

updateBaseMapPaint(map, baseMaps, idx)

Description:
  • 就地更新單一底圖 entry 的 paint(顏色/透明度), 不重建 layer/source — 避免重抓圖磚與其他未變更圖層閃爍。供「僅 paint 變更」的快路徑使用。

Source:
Parameters:
Name Type Description
map Object
baseMaps Array

底圖配置陣列

idx Number

索引

updateBaseMapsIncremental(map, baseMaps)

Description:
  • 「僅順序/可見性/paint 變更」時的增量套用: 就地更新 paint 與 visibility, 並用 moveLayer 將疊加層依新陣列序重排至「資料圖層之下、底圖之上」。 完全不 remove/add source(不重抓圖磚), 不擾動資料圖層 z-order(無閃爍)。

Source:
Parameters:
Name Type Description
map Object
baseMaps Array

本次 baseMaps(新順序)