LoginSignup
11
2

More than 1 year has passed since last update.

MapLibre GL JSで地理院標高タイルを利用するためのモジュールを公開しました

Last updated at Posted at 2022-12-23

これは MIERUNE AdventCalendar 2022 24日目の記事です。
昨日は @sorami さんによる 国土地理院「地名集日本」を餅から米 でした。

TL;DR

screenshot.png(こいついつも富士山の3D地図作ってんな…)

MapLibre GL JSで地理院標高タイルを扱えるようにするmaplibre-gl-gsi-terrainを公開しました

使い方

npm install maplibre-gl-gsi-terrain@0.0.2
import maplibreGl, { Map } from 'maplibre-gl';
import { useGsiTerrainSource } from 'maplibre-gl-gsi-terrain';

// そのままsourcesに追加出来るデータが得られる
const gsiTerrainSource = useGsiTerrainSource(maplibreGl.addProtocol);

new Map({
    container: 'app',
    style: {
        version: 8,
        sources: {
            terrain: gsiTerrainSource,
        },
        terrain: {
            source: 'terrain',
            exaggeration: 1.2,
        },
    },
});

技術的な補足

基本的な考え方は、以前に書いた記事が詳しいです。ただし以下の2点で改善しています。

  1. Float32Array -> PNGの変換にfast-pngを利用
  2. タイルリクエストがキャンセルされた際の処理を追加

インターフェースが

const gsiTerrainSource = useGsiTerrainSource(maplibreGl.addProtocol);

と、やや奇妙ですが、一番シンプルだと考えています。gsiTerrainSourceはtype=raster-demのsourceです。

その他

  • やってることの割にバンドルサイズが大きい。原因はおそらくfast-png。ほかによい手段があれば乗り換えたい。

  • その他の地理院標高タイルx富士山シリーズ

明日は@DevKoukiMaedaさんです!

11
2
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
11
2