2. 地図の作成
Cesium では地図を Viewer と呼びます。画像と地形は Cesium ion から配信されるため、アクセストークンが必要です。ビューアーにはホームボタン・シーンモード切替 (3D / 2D / コロンバスビュー)・ベースマップ選択・操作ヘルプ・タイムラインといったコントローラーが標準で付属しており、既定ですべて表示されます。
Cesium.Ion.defaultAccessToken = 'YOUR_CESIUM_ION_ACCESS_TOKEN';
const viewer = new Cesium.Viewer('map', {
terrain: Cesium.Terrain.fromWorldTerrain(),
infoBox: false,
selectionIndicator: false,
geocoder: false
});
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(132.4553, 34.28, 25000),
orientation: {
heading: 0,
pitch: Cesium.Math.toRadians(-50),
roll: 0
}
});
このライブエディタでのトークンについて
以下のサンプルは、このサイトのビルド時にトークンが埋め込まれることを前提としています (ローカルでは .env に CESIUM_ION_ACCESS_TOKEN を設定して uv run python scripts/generate_keys.py を実行します。Cloudflare Pages ではビルド用の環境変数から取得します)。トークンが指定されていない場合は、地球儀の代わりに通知が表示されます。ion の無料アカウントを作れば既定のトークンが発行されます (こちらから作成)。
ズームレベルではなくカメラの高さ
Cesium に zoom レベルはありません。カメラは 3D 空間に配置するため、Cartesian3.fromDegrees(lng, lat, height) の高さはメートル単位です (ここでは市街地の南側、上空 25 km)。orientation.pitch で 50 度見下ろすように傾け、地形が見えるようにしています。座標の順序は [lng, lat] で、Leaflet とは違い MapLibre と同じです。
オフにしているウィジェット
オフにしているのは 3 つだけで、それぞれ理由があります。infoBox と selectionIndicator は地物のクリックに反応するため描画操作と衝突し、geocoder (検索) はトークンに geocode スコープが必要です。それ以外は Cesium の既定のままです。シーンモード切替を使うと、同じコードのまま 2D と 3D の両方で描けることが確かめられます。