コンテンツにスキップ

Tiles3DStyle

OGC 3D Tiles Style (Declarative Styling)

フィーチャーのプロパティから表示可否・色などを算出する。スタイル JSON と式の文法は 3D Tiles の Styling 仕様に従う。仕様は式の評価に失敗したときの扱いを定めていないので、 描画時の扱い (show が失敗した feature は表示・白に、color だけが失敗した feature は色だけ白にする) は Mapray 独自である。描画に適用されるのは color と show だけである。pointSize と meta は Tiles3DStyle.evaluate の戻り値には 入るが、Tiles3DScene はメッシュのみを描くため反映されない。

式はスタイル・利用者の入力・タイルのデータから来るので、画面が止まらないように大きさを制限し、超えると例外にする。 式の長さとネストの深さ、regExp() の pattern と照合する文字列の長さに上限がある。 regExp() はさらに、後方参照、量指定子か選択 (|) を中に持つ群の繰り返し ((a+)+ など)、 2 個を超える繰り返しの量指定子 ({4} のような回数の決まったものは数えない)、 選択と省略できる要素の組み合わせが 1024 を超える pattern を受け付けない。 照合する文字列の上限は、照合に時間の掛かる pattern ほど短い (.*x.*y なら 256 文字)。

const style = mapray.Tiles3DStyle.fromJson( {
    show:  "${bldg:measuredHeight} > 0",
    color: { conditions: [
        [ "${bldg:measuredHeight} >= 60", "color('red')" ],
        [ "true", "color('#8fb7d6')" ],
    ] },
} );
const { show, color } = style.evaluate( props );

See

mapray.Tiles3DScene.setStyle

Methods

evaluate()

evaluate(props, state?): Result

フィーチャーのプロパティに対してスタイルを評価する。

式の評価に失敗したとき、show が真偽値でないとき、color が長さ 4 の有限な数値の配列でないときは例外を投げる。

Parameters

Parameter Type Description
props Record<string, Value> フィーチャーのプロパティ (名前 → 値)。値は Tiles3DStyle.Value に限る
state? State

フィーチャー状態 (hover/select 等)。式から ${state.NAME} で参照できる

(mapray 拡張)。動的ハイライトに使う。例:

color: "${state.selected} === true ? color('yellow') : color('blue')"

Returns

Result


fromJson()

static fromJson(json): Tiles3DStyle

スタイル JSON から Tiles3DStyle を生成する。

描画に適用されるのは color と show だけである。pointSize / meta を含む スタイルは、それらが描画に使われない旨を 1 度だけ警告する。

Parameters

Parameter Type Description
json StyleJson OGC 3D Tiles Style JSON (show / color / pointSize / meta / defines)

Returns

Tiles3DStyle