0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MapLibre GL JS】v1.0からv6.0までの技術的進化を追ってみた

0
Posted at

初めに

MapLibre GL JSの簡単な歴史の変遷を調査することにした。
なお、MapLibre GL JSはMapbox GL JSのオープンソース版であるv1.13をフォークして誕生し、現在11,000以上のスターと1,000名を超える貢献者に支えられるオープンソースプロジェクトである。

公式ドキュメントより引用
MapLibre GL JSは、TypeScriptを基盤とし、ブラウザ上でWebGLを用いてベクタータイルおよびMapLibre Style Specificationに準拠したインタラクティブな地図を60fpsという極めて高いパフォーマンスで描画するエンジンである。

環境

  • WebGL2対応ブラウザ
  • MapLibre GL JS 1.0 〜 6.0

バージョン別アーキテクチャと機能

バージョン テーマ 主な機能とアーキテクチャの変更点
v1.x 基盤構築 Mapboxトラッキングコードの排除。raster-demの安定化、line-gradientの描画精度向上。
v2.x 型安全性と3D TypeScriptへの全面移行。平坦な地図を隆起させる「3D地形(Terrain 3D)」機能の実装。
v3.x 限界突破 WebGL2本格採用。Deck.glとのインターリーブ描画(Zバッファ共有)。スタイル遅延ロードと並列パース。D50色空間基準。リアクティブ連携用のtransformCameraUpdateフック。
v4.x API近代化 コールバック地獄を解消するPromiseベース(Async Actor)へ移行。UI分離(@maplibre/components)の検討。404/204エラーハンドリングの厳格化。
v5.x 地球儀とクラウド EPSG:3857の面積歪みを解消するGlobe Projection(グローブビュー)。HTTP GET Rangeリクエストを活用するCOG(Cloud Optimized GeoTIFF)ネイティブサポート。
v6.x 次世代規格 ESM単一配布(Workerのblob:起因のCSP制約解消)。WebGL1廃止。次世代ベクタータイル「MLT」対応。イベントオブジェクトの厳密な型定義化(MapBoxZoomEvent等)。fill-layer-opacityによる重畳時のアーティファクト解消。球面座標系ベースの光源補間。

各バージョンで提供される機能やパラメータは、プロジェクトの用途に合わせて指定すること。
※事前にクラウドストレージ等でデータホスティングを行い、COGやMLTのURLを取得しておく必要がある。
※v6環境では古いWebGL1向けの処理が完全に削除されているため、WebGL2環境で実行する必要がある。

v6.0よりUMDバンドル(maplibre-gl.js)が廃止され、ESM(ECMAScript Modules)へ完全一本化されたため、従来の<script>タグを用いたレガシーな読み込み方法は現在使えない。
代替手段として、type="module"の指定や名前空間インポート(import * as maplibregl...)を使用するESMビルド(.mjs)がある。

終わりに

このライブラリを使用しバージョンごとの進化を追うことで、単なる地図表示から「高度にプログラマブルな地理空間レンダリングエンジン」へと環境を移行することができた。3D建築物とライティングの連動などを手動でWebGLを書くよりもはるかに工数が減らせるので、非常に有用なライブラリだと思う。

MapLibreのエコシステムには他にも、中国語・日本語・RTL(右から左へ記述する言語)スクリプトを動的配置する多言語タイポグラフィ対応や、Wasm技術を用いてCAD図面(DWG)をブラウザ上で直接パースし指数補間式でWGS84へマッピングする機能、Deck.glやThree.js/Babylon.jsとの直接統合など非常に有用な機能が多くある。今後もさまざまなAPIやフレームワークを組み合わせて使ってみたいと思う。

#デジタルツインやサーバーレスGISが構築できそう(ペタバイト級の衛星画像をS3にCOG/PMTilesとして配置→ブラウザで直接ストリーミング描画→分析などで使用)

使用にあたってはオープンソースライセンスの範囲内でお使いください。詳細は公式ドキュメントを読んでお使いください。

参考サイト

https://maplibre.org/

https://github.com/maplibre/maplibre-gl-js

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?