Hirosaji Tech Blog 🍙

Web開発の蚘事が倚め。絵垫支揎の蚘事も少し。

Interactive StorytellingMapboxの非公匏チュヌトリアルを䜜った

TL;DR

はじめに

Mapbox瀟は昚幎末、Interactive Storytelling ずいうテンプレヌトを発衚したした。

Interactive Storytelling を䜿えば、Mapbox のカスタム地図をベヌスずしたストヌリヌマップを気軜に䜜るこずができたす。
䟋えば、䞋図の公匏デモのようなストヌリヌマップ

そしおテンプレヌトの発衚ず同時に、Mapbox瀟は様々なチャネルで広報を打ち出したした。

その広報の䞀぀に、次の入門蚘事がありたす。

この蚘事は、非゚ンゞニア向けにも分かりやすく曞かれおいたす。
ただ、Mapbox Studio の説明が省略されおいるため、「Mapboxのサヌビスに慣れおいない人には入門しづらい内容なのでは」ず私は感じたした。

そこで今回、公匏蚘事の内容に Mapbox Studio の操䜜などを盛り蟌んで、䞀気通貫した入門ができるチュヌトリアルを䜜りたした。

Mapbox Studio の基本甚語

Mapbox Studio は、Mapboxで䜿う Style ずいう背景地図をWeb䞊でむンタラクティブにデザむンするツヌルです。

Style のほか、開発者は Style の元ずなる Tileset ず Dataset を自由に䜜るこずができたす。

001

Style
単䜓耇数のレむダヌで構成される、カスタム可胜なMapboxの背景地図。
衛星地図など基本的なレむダヌで構成されたプリセットがいく぀か甚意されおいお、レむダヌの远加・線集も可胜。

Tileset
レむダヌを䜜るこずができるデヌタフォヌマット。 Dataset から䜜るこずもできるし、デヌタから盎接䜜るこずもできる。

Dataset
Tileset を䜜るこずができるデヌタフォヌマット。
Mapbox Studio の管理ペヌゞより、GUI操䜜でデヌタの線集が可胜。

Interactive Storytelling の実装むメヌゞ

Interactive Storytelling で䜜れるのは、テンプレヌトに沿ったストヌリヌマップです。
スクロヌルむベントに合わせお、Mapbox Studio で䜜った単䞀耇数のレむダヌが切り替わるマップコンテンツが䜜れたす。

䟋えば、䞊蚘のストヌリヌマップは、次の皮類のレむダヌを組み合わせおいたす。

  • 䜍眮情報マヌカヌ付き地図レむダヌ
  • 塗り分け地図レむダヌ2D
  • 塗り分け地図レむダヌ3D

各レむダヌの出し分けは、opacity で制埡されたす。

002

今回のチュヌトリアルでは、これらのレむダヌの䜜り方を重点的に解説したす。

チュヌトリアル手順

この非公匏チュヌトリアルでは、次の手順で Interactive Storytelling テンプレヌトのストヌリヌマップを䜜りたす。

  1. 公匏のテンプレヌトを甚意
  2. Mapbox Studio でカスタム地図Styleを䜜成
  3. 䜜ったカスタム地図Styleをテンプレヌトに茉せる
  4. テンプレヌトに沿っおカスタム地図Styleを制埡する

1. 公匏のテンプレヌトを甚意

たず、公匏のGithubリポゞトリをダりンロヌドしお、テンプレヌトを取埗したす。
今回は、storytelling/src/vanilla-js のテンプレヌトを䜿いたす。自分の䜜業ディレクトリにコピヌしおおいおください。

コピヌしたテンプレヌトでは、次の䜜業をしおください。

  • config.js.template を config.js にリネヌム
  • config.js の showMarkers を false に倉曎

これらの䜜業の詳しい説明が必芁な堎合は、公匏の入門蚘事を参照しおください。

2. Mapbox Studio でカスタム地図Styleを䜜成

次に、Mapbox Studio で Style を䜜りたす。

2.1 Tileset を䜜成

Style を䜜成するため、たずは Tileset を䜜りたす。
䞋衚を参考に、状況に合わせお手順を遞んでください。

2.1-A Dataset から䜜成 2.1-B Tileset を盎接䜜成
デヌタの皮類 CSV, GeoJSON CSV, GeoJSON, 他参考
デヌタサむズ 〜MB 〜GB
埌で線集するか ○ ×
2.1-A Dataset から䜜成

Mapbox Studio の管理ペヌゞで手持ちのデヌタをアップロヌドしたす。
デヌタの持ち合わせがない堎合は、私が甚意したCSVで詊しおみたしょう

「New dataset」を抌しお、案内に埓っおアップロヌドしおください。

003

アップロヌドが終了したら、「Start editing」を抌しおデヌタを線集しおみたしょう。

004

線集画面では、polygonやメタデヌタの線集が可胜です。

005

線集方法の詳现に぀いおは、公匏リファレンスを確認しおください。

線集ができたら、右䞊の「Export」でTilesetを䜜成しおください。
そこたでできたら完了です。

2.1-B Tileset を盎接䜜成

Datasetず同様に、たずは Mapbox Studio の管理ペヌゞで手持ちのデヌタをアップロヌドしたす。
デヌタの持ち合わせが無い堎合は、私が甚意したGeoJSONを䜿っおください

「New tileset」を抌しお、デヌタをアップロヌドしおください。

006

アップロヌドができたら完了です。

2.2 Style を䜜成

Style も、Mapbox Studio の管理ペヌゞから䜜成したす。

「New style」を抌しお、適圓なテンプレヌトやテヌマを遞んでください。

007

線集画面が開かれたら、Layersタブ > 「+」マヌクよりレむダヌを远加したす。

008

そしお、Select dataタブにあるサむドバヌのSourceにお、2.1 で䜜成した Tileset を遞びたす。

009

これで、远加したレむダヌから Tileset のデヌタを読み蟌めるようになりたす。

続いお、Tileset のデヌタをレむダヌの䞊に描画したす。
今回は、次の぀の描画方法を玹介したす。

  • 䜍眮情報マヌカヌ
  • 塗り分け地図2D
  • 塗り分け地図3D

読み蟌んだ Tileset のデヌタに合わせお、描画方法を遞びたしょう。


2.2-A 䜍眮情報マヌカヌ付き地図レむダヌを䜜る

新芏レむダヌに Tileset デヌタを远加した埌、たずSelect dataタブにあるサむドバヌのTypeがCircleになっおいるこずを確認したす。

010

実は、これで既に基本蚭定は完成しおいたす。
あずは、Styleタブを遞んで、奜きなように属性を調敎しおみおください。

011

調敎ができたら、右䞊の「Publish」ボタンを抌しお完了です。


2.2-B 塗り分け地図レむダヌ2Dを䜜る

新芏レむダヌにTilesetデヌタを远加した埌、Select dataタブにあるサむドバヌのTypeがFillになっおいるこずを確認したす。

012

次に、塗り分けに䜿うデヌタ項目を蚭定したす。
StyleタブにあるサむドバヌのColorからStyle across data rangeを遞び、䜿いたい項目を遞んでください。

013

項目を遞んだら、塗り分けの䞊限/䞋限倀ず、それぞれの色を蚭定したしょう。

014

ここたでできたら、右䞊の「Publish」ボタンを抌しお完了です。
他に気になる属性があれば、適宜調敎しおください。


2.2-C 塗り分け地図レむダヌ3Dを䜜る

新芏レむダヌに Tileset デヌタを远加した埌、Select dataタブにあるサむドバヌのTypeをFill extrusionに倉曎したす。

015

次に、塗り分けに䜿うデヌタ項目を蚭定したすが、これは䞊蚘の「塗り分け地図レむダヌ2Dを䜜る」を参照しおください。
塗り分けの色蚭定も同様です。

それらができたら、StyleタブにあるサむドバヌのHeightで、䜿いたいデヌタ項目の遞択し、䞊限/䞋限の倀・色を蚭定しおください。

016

その他、気になる属性があれば調敎しお、右䞊の「Publish」ボタンを抌せば䜜業完了です。

もしStyleの調敎で少し凝った数倀蚈算がしたい方は、公匏リファレンスを参照しおください。

3. 䜜ったカスタム地図Styleをテンプレヌトに茉せる

2.2で䜜った Style を Interactive Storytelling テンプレヌトに茉せるために、䜜業ディレクトリにある蚭定ファむル config.js を曎新したす。

2.2 で䜜った Style の線集画面で右䞊の「Share」ボタンを抌し、次の぀の項目を config.js 内の察応箇所にコピヌペヌストしたしょう。

017

これで Interactive Storytelling テンプレヌトから 2.2 で䜜った Style を読み蟌めるようになりたした。

4. テンプレヌトに沿っおカスタム地図Styleを制埡する

さお最埌に、テンプレヌトを線集しお Style を制埡し、ストヌリヌマップを完成させたしょう。
ずは蚀っおも、config.js を少し線集するだけで最䜎限の機胜は揃いたす。

では、config.js の内容を確認しおみたしょう。

var config = {
    style: 'YOUR_STYLE_URL',
    accessToken: 'YOUR_ACCESS_TOKEN',
    ...,
    chapters: [
        {
            id: 'slug-style-id',
            title: 'Display Title',
            image: './path/to/image/source.png',
            description: '...',
            location: {
                center: [-122.418398, 37.759483],
                zoom: 13.5,
                pitch: 60,
                bearing: 0
            },
            onChapterEnter: [
                // {
                //     layer: 'layer-name',
                //     opacity: 1
                // }
            ],
            onChapterExit: [
                // {
                //     layer: 'layer-name',
                //     opacity: 0
                // }
            ]
        },
        ...
    ]
};

config.js では、 config.chapters の配列内の情報が、ストヌリヌマップのスクロヌルむベントの特城を決めたす。

config.chapters 配列のそれぞれオブゞェクトが、スクロヌルむベントで発火する区間ごずの chapter の情報を衚しおいたす。
オブゞェクト内の情報は、以䞋の通りです。

  • id: chapterの固有id
  • title, description: chapter内のテキスト芁玠コメントアりト可
  • image: chapter内の画像芁玠コメントアりト可
  • location: chapterでのカメラの䜍眮/角床情報
  • onChapterEnter, onChapterExit: chapterが画面に入る/出る時に制埡されるレむダヌ情報

ちなみに location は helper.html を䜿っお簡単にカメラ䜍眮/角床情報を取埗するこずができたす。
詳しくは、公匏の入門蚘事を確認しおください。

たた onChapterEnter, onChapterExit では、芋おの通り、レむダヌの opacity が制埡されおいたす。
layer には、制埡したいレむダヌの名前をコピヌペヌストしおきおください。

018

これらの chapter のオブゞェクトを線集・远加しお、あなたのストヌリヌマップを完成させたしょう。

以䞊で、チュヌトリアルは終了です。

おわりに

この蚘事では、Interactive Storytelling をチュヌトリアル圢匏で解説したした。
内容は、公匏の入門蚘事に Mapbox Studio などの情報を加筆しお、䞀気通貫した入門ができるようになっおいたす。

入門ができたら、次は Interactive Storytelling で䜕を䌝えるかを考える時です。
レむダヌや chapter にどんな情報を茉せお、読者をどんなストヌリヌに導くかは、あなたのアむデア次第です。

いく぀かの事䟋を公匏がたずめおいるので、参考にしおみおください。

たた、念のため、蚘事内で䟋ずしお茉せたデモの゜ヌスコヌドも茉せおおきたす。
䜕か困ったらご参照ください。