Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Integrating MapLibre GL JS with deck.gl: A Review

Integrating MapLibre GL JS with deck.gl: A Review

MapLibre Meetup Japan #04
https://mug-jp.connpass.com/event/345527/

にてお話しした内容をブラッシュアップして公開しました。
deck.glとMapLibre GL JS の連携についての初歩をサンプルコードと共に記しています。

Avatar for alt9800

alt9800

March 18, 2025
Tweet

More Decks by alt9800

Other Decks in Programming

Transcript

  1. MapLibre GL JSとdeck.glってどうやって連携させるん だ?【復習編】 MapLibre Meetup Japan #04 MapLibre GL

    JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 1
  2. おだやか @alt9800 (GitHub / OpenStreetMap / 𝕏 ) 西日本の果てで WebGIS

    / リモートセンシング/ XR などでご飯食べています。 マイクロモビリティが好きです。 最近プロンプト職人になりつつあり ます。助けてください。 MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 2
  3. 北海道楽しかったネ... FOSS4G Hokkaido 2024 https://foss4g.hokkaido.jp State of the Map Japan

    2024 https://stateofthemap.jp/2024/ MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 3
  4. MapLibre GL JS との比較 MapLibre GL JS deck.gl ZXYタイルマップ読み込み ◦

    ◦ style.jsonの読み込み ◦ × データレイヤーのオーバーレイ ◦ ◦ ユーザインタラクション zoom / ドラッグ / 回転 ◦ ◦ ホバーによるデータの詳細表示 ◦ ◦ (カメラコントロールを伴うアニメーション はどっちでやっても辛い) MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 13
  5. deck.glが苦手なこと フォント周り / ラベルの機能が 貧弱 style.jsonを読み込むことに加え て、ベクタータイルを直感的に 使えない 地図の操作ボタンをライブラリ 側でサポートしていないので、

    自分でDOMの構成を頑張る必要 がある オーバーレイするボタンをつくる例 MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 15
  6. なぜdeck.glのベースマップの描画機能などが貧弱に見えるか → もともと Mapbox GL JS との連携を念頭に開発が進んでいた経緯がある (GISとしての機能はベースマップ構築用のライブラリに委ねる選択をした) 上記のようにMapbox GL

    JS の関連ライブラリを探す表記がでることがあるが、現在で はMapLibre GL JS との連携が強力になっており、無視できるようになった。 MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 16
  7. 詳細 基本的には deck 、 libre 両方のインスタンスの中で同じDOMを指定する。 (この場合は container: 'map' )

    加えてViewStateを同期させると良い。 この場合の「同期」は、deck.gl側からMapLibre GL JSの緯度経度、zoomレベルなどを 追いかけるようにして同じ視点を持つようにする。 onViewStateChange: ({ viewState }) => { map.jumpTo({ center: [viewState.longitude, viewState.latitude], zoom: viewState.zoom, pitch: viewState.pitch, bearing: viewState.bearing }); MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 20
  8. MapLibre GL JS と deck.glの 機能を組み合わせる例 MapLibre GL JS のベースマップを切

    り替える機能の上に、deck.glの3Dレ イヤーを重ねてみた 実装サンプル MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 23
  9. Next step ベクタータイル他、3Dオブジェクトを読み込むと強みを生かせるかも その際の強い味方 https://loaders.gl しみずさんの例 https://gunmagisgeek.com/blog/deck-gl/7303 Shi-Worksさんの例 https://qiita.com/shi-works/items/f3ae4096c08ef4ccbccc 先駆者のお二人の例でも、背景レイヤーの操作やベクタータイルはMapLibreで読み込

    み、点群をはじめとする3D表現をdeck.glに担当させていることが多いようだ。 (広い範囲のデジタルツインだとCesiumやRe:Earthの採用が優位か) MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 24
  10. まとめ 初学者からみた二つのライブラリの連携 Map Libre GL JS 側から見た連携の旨み → リッチな3D表現に簡単にタッチできる deck.gl

    側から見た連携の旨み → ベースレイヤー他、いわゆるWebGISの機能を利用しやすくなる MapLibre GL JSとdeck.glってどうやって連携させるんだ?【復習編】 Alt9800 25