Ortho Earth 2.2 を公開しました

CesiumJS の例が地球儀で動き、Leaflet と Google Maps のコードも付いてきた

2026-10-31 · Kenji Yoshida · @ortho-earth/globe · @ortho-earth/core · @ortho-earth/cesium

@ortho-earth/globe と @ortho-earth/core を 2.2 にしました。 2.1 は MapLibre の版でした。この版は CesiumJS の版です。目標は、Cesium にできて Ortho Earth にできないものを無くすことでした。 新しいパッケージは三つです。@ortho-earth/cesium と、同じ考え方の @ortho-earth/leaflet・@ortho-earth/gmaps です。

1. CesiumJS のコードを地球儀で

@ortho-earth/cesium は、CesiumJS 1.146 と同じ名前の名前空間を返します。描かない部分(計算、時刻、カメラ、Entity、CZML、時計、ion、ウィジェット)は Cesium のコードそのままで、 描くところだけが Ortho Earth の地球儀です。だから Cesium のコードは import を変えるだけで動きます。

import * as Cesium from "@ortho-earth/cesium";
const viewer = new Cesium.Viewer("cesiumContainer");

物差しは Cesium 公式の Sandcastle 309 本です。一本ずつ、本物の CesiumJS と地球儀でコードを変えずに動かし、同じ時刻・同じカメラで撮った二枚の絵を比べます (採点は 297 本。月・火星、ビューアの無い例、2D で始まる例は外しています)。全部の組は /sandcastle で見られます。

段最初の撮影(10 月 25 日)2.2(10 月 31 日)
3 同じ絵23190
2 同じ答え120107
1 動く1290
0 動かない240

採点した例はすべて動き、Cesium と同じ答えを返すようになりました。およそ三分の二は同じ絵です。最後の撮影は、npm に出したのと同じコードを、実 GPU(WebGPU)で撮ったものです。 そこまでの間にエンジン自身も多くを覚えました。どれも素の地球儀の API からも使えます。

地球儀そのものの API に移りたいときは、CesiumJS から来た人へ に Cesium の呼び出しと対応する書き方を並べています。

2. Leaflet と Google Maps のコードも

同じやり方で、ほかの二つの API も動くようになりました。@ortho-earth/leaflet は Leaflet 1.9 と同じ形の L を、@ortho-earth/gmaps は google.maps を返します。 どちらも地球儀の上に(望めば平らな MapLibre の地図に)描き、変えるのは import だけです。Google の方は、地図に Google の鍵が要りません。 鍵を渡せば、Geocoder・Directions・Places・Street View を Google のサービスへ中継します。

どちらにもまだ公式の例のギャラリーは無いので、Leaflet から来た人へ と Google マップから来た人へ に、訳すものを正確に並べました。 訳さないものは、コードを動かせばコンソールに出ます。

3. 使い方は 2.1 のまま

2.2 はすべて上に足した物です。2.1 向けに書いたコードは 2.2 でそのまま動きます。

npm i @ortho-earth/[email protected]
npm i @ortho-earth/cesium      # CesiumJS のコード
npm i @ortho-earth/leaflet     # Leaflet のコード
npm i @ortho-earth/gmaps       # Google Maps のコード

並べてみると、一つの式に見えてきました:Ortho Earth = MapLibre × Cesium − メルカトル + α。

Kenji Yoshida @ Yokohama