內網也能跑三維地圖:從高德JSAPI轉向OSM與MapLibre的自建部署方案
掘金一篇技術長文以石河子工程落地結果為基礎,整理以OSM原始數據與MapLibre GL JS自建可獨立部署地圖方案的架構、資料來源與能力邊界。
2026年9月7日,技術社羣掘金出現一篇題為「支援獨立部署的地圖方案」的長文,作者Gyrate以城市治理大屏、園區數位孿生與應急指揮專案的實際經驗為基礎,說明如何以OpenStreetMap(OSM)原始資料與MapLibre GL JS為核心,搭建一套可運行於內網甚至斷網環境的地圖系統,並以新疆石河子一項工程的落地結果作為驗證案例。文章發布後累計約46次閱讀,屬小眾技術內容,但其整理的架構取捨與授權邊界,對同類政府與企業專案具參考價值。
為什麼線上SDK不再是答案
作者指出,此類專案過去多將高德地圖JSAPI視為預設選項。高德在中國境內的圖資、中文POI、地址搜尋與導航上累積深厚,前端疊加點位、軌跡與模型的開發效率也高。
轉折來自客戶端的嚴格條件。部分專案要求地圖運行在內網甚至完全斷網的環境,同時保留GL三維效果,底圖上還要繼續疊加建築、動態模型、交通流、邊界牆與自訂POI。當這些條件同時成立,問題就從「呼叫一個線上SDK」變成「資料、渲染與服務如何整套留在自己環境裡」。
作者特別點出一條灰色地帶:以爬取圖磚資源、快取JS執行模組的方式讓線上引擎離線運行。這種做法在他看來有較大的違規風險,除非與供應商簽有授權合約,否則在商業專案中並不可取;即便暫時能跑起來,後續也很難向客戶解釋資料來源、更新方式與交付邊界。他主張,客戶要的是一套可長期維護的內網地圖,工程裡就應當儲存原始資料、構建腳本、樣式配置與服務程式碼。
三個必須分開建設的能力
文章把需求拆成三塊,並強調三者不能混為一談。
第一是離線底圖。瀏覽器裡的地圖元件、底圖圖磚、文字標註若每一項都要訪問公網,專案就無法在隔離網路中使用。
第二是三維渲染。普通圖片瓦片只能提供一張底圖,無法像向量地圖那樣按縮放級別控制道路、用地、文字與建築,也不方便讓業務模型進入同一套WebGL場景。專案裡的建築、燈杆、交通流與邊界牆都要求地圖引擎能接受自訂圖層。
第三是導航與地理編碼。作者的原話值得留意:地圖上能畫出路,不代表它就能算路線;用戶輸入一個地點,也不等於系統已具備地址搜尋與逆地理編碼。底圖、路徑規劃與地理編碼需要分開建設,不能都當成一張地圖的附屬功能。
資料層:一份PBF餵三條管線
方案的起點是從Geofabrik下載的中國各省OSM資料,格式為PBF封裝包。這份原始資料在文中被拆成三條支線:向量圖磚與樣式交給MapLibre GL JS渲染;路網資料交給OSRM或Valhala做路徑規劃;地址與POI資料交給Nominatim或業務搜尋索引。
底圖部分,PBF先在本地產生MBTiles或PTiles格式的本地圖磚,再由本地HTTP服務按標準向量圖磚介面供瀏覽器取用。道路、建築、水系、用地、行政邊界、POI與名稱在資料層中分開儲存,樣式由MapLibre的Style JSON控制。作者形容這帶來一個直接變化:底色、道路、綠地、建築高度與文字層級都回到專案程式碼裡,不再受線上主題限制,也不需向地圖供應商另外付費,樣式可與單一專案深度綁定。
路網部分,OSM以node記錄座標、以way把節點連成道路線,highway標籤區分高速、主幹道、支路與步行道等級;oneway、maxspeed、access描述單行向、限速與通行權限;轉向限制掛在relation上,紅綠燈則是帶有highway=traffic_signals標籤的節點。這些標籤合起來構成一張有方向、有連接、有規則的圖。OSRM與Valhalla直接讀取osm.pbf,把道路整理成這樣的圖結構再做最短路徑計算,因此導航依賴的是完整道路拓撲,而非畫在底圖上的線條。
地址與POI在OSM裡都是掛在要素上的標籤,沒有獨立的地址表。門牌、街道、城市寫在addr:housenumber、addr:street這類標籤裡;餐廳、醫院、商店、酒店由amenity、shop、tourism等類別標籤加name構成,一個帶名稱的節點或建築輪廓就是一個POI。
作者同時坦承資料面的短板:OSM在中國境內的覆蓋並不均勻,主幹道沿街POI相對齊全,但社區內部、門牌與長尾店鋪缺失較多。這與高德等商業圖資長期經營的中文POI庫存在明顯差距,也是自建方案在國內落地時最實際的成本所在。
渲染層:MapLibre GL JS的三維能力
MapLibre GL JS是瀏覽器端的WebGL向量地圖引擎,能載入本地向量圖磚與GeoJSON,支援建築拉伸、傾斜視角、地形與自訂渲染圖層。文中的示例專案三維地圖全景完全脫離高德地圖支援,畫面包含建築、道路、文字標註、邊界與業務動態效果,作者以此作為方案可行性的直觀證據。
訊源與核實邊界
需要說明的是,本文的技術細節與落地案例均來自Gyrate的單一文章自述,石河子工程的具體規模、驗收情形與客戶背景未見獨立訊源佐證。OSM資料的授權條款為ODbL,Geofabrik的下載服務、OSRM與Valhalla的開源授權、Nominatim的部署要求均屬公開可查的既有事實,與文章描述一致。至於各商業圖商對離線快取的授權限制,實際條款以各家服務協議為準,文中的風險判斷屬作者個人觀點。
從行業脈絡看,政府與大型企業專案要求資料不出內網並非新鮮事,開源自建地圖堆疊在國際間已是成熟路線,國內的阻力主要落在圖資完整性與長期維護人力。這篇文章的價值在於把「底圖、導航、地理編碼分開建設」的取捨講得清楚,並給出一條從PBF到渲染、可完整儲存於工程目錄的實作路徑。至於OSM在中國境內的資料密度何時足以支撐門牌級應用,目前沒有明確時程,這仍是自建方案與商業圖資之間最難以工程手段彌補的差距。
主題