Jin Igarashi
ソフトウェアエンジニア, Fracta Inc
はじめての方への紹介
自分で作るまでは。
Leaflet.draw、leaflet-freedraw、mapbox-gl-draw... API も挙動もバグもばらばらで、 描画のコードは1つの地図に縛られてしまう。
ウェブ地図上で描画するためのオープンソースの TypeScript ライブラリ。 約 4 年前に James Milner さんが作りました。
描画エンジンは1つ、地図はたくさん。
npm install terra-draw
アダプターが地図とやり取りし · モードが操作を担い · ストアが GeoJSON を保持する。
アダプターを差し替えるだけ。あとはそのまま。
point
linestring
polygon
marker
polyline
rectangle
angled-rectangle
circle
sector
sensor
freehand
freehand-linestring
select
Terra Draw で何ができるのか
import { TerraDraw, TerraDrawPolygonMode } from 'terra-draw'; import { TerraDrawMapLibreGLAdapter } from 'terra-draw-maplibre-gl-adapter'; const draw = new TerraDraw({ adapter: new TerraDrawMapLibreGLAdapter({ map }), modes: [new TerraDrawPolygonMode({ snapping: true })] }); draw.start(); draw.setMode('polygon');
draw.on('finish', (id) => { const snapshot = draw.getSnapshot(); const feature = snapshot.find((f) => f.id === id); console.log(JSON.stringify(feature)); });
getSnapshot() / addFeatures() — GeoJSON を扱えるものとなら何とでも、 フィーチャーの読み込み・保存・往復ができる。
getSnapshot()
addFeatures()
プロジェクトですぐ使える新しい機能
どんな描画アプリにもある機能で、最も要望が多かったものの 1 つ。 そして、正しく作るのが難しい。
draw.undo(); draw.redo();
ジオメトリのスタイル指定の幅が広がりました。スタイルのコールバックはフィーチャーを 受け取るので、色・太さ・不透明度を独自のプロパティから決められます。
line モードが破線に対応しました。新しい lineStringDash スタイルプロパティを使います。
lineStringDash
線として描き始めて、そのまま面として閉じられます。モードを切り替える必要はありません。
1 つのモードを別々の設定で 2 回登録できます。たとえばスタイルとバリデーションの 異なる 2 つのポリゴンモードを同時に使えます。
クリック & ドラッグに対応。角を 1 つずつクリックする代わりに、矩形や円を ひと続きの操作で描けます。
Terra Draw が提供するのは描画エンジンです。ボタン、モードの切り替え、 地図のコントロールは自分で書くことになります。
MapLibre GL JS 用のプラグイン。Terra Draw と、すぐ使えるコントロールをセットで。
npm install @watergis/maplibre-gl-terradraw
あとは 1 行書くだけで、MapLibre の地図にコントロールを追加できます。
import { MaplibreTerradrawControl } from '@watergis/maplibre-gl-terradraw'; map.addControl( new MaplibreTerradrawControl({ open: true }), 'top-left' );
MaplibreMeasureControl は、描いたジオメトリに距離と面積のラベルを追加します。
MaplibreMeasureControl
線を描けばルートが返ってきます。到達圏とルーティングのコントロールが、 描いたジオメトリを API リクエストに変換します。
UNDP の GeoHub では、描画と計測にこのプラグインを使っています。
Terra Draw プロジェクトへの参加方法
FOSS4G 2026 のワークショップでは、ここまでの内容をすべてブラウザ上で扱います。 どのページにもライブエディタがあります。
Terra Draw ワークショップ - https://workshops.terradraw.water-gis.com/workshops/foss4g2026/
インストールもビルドも不要 — コードを編集すれば地図が更新されます。
ご清聴ありがとうございました