import Camera from "./Camera"; import Ray from "./Ray"; import Entity from "./Entity"; import DebugStats from "./DebugStats"; import RenderCallback from "./RenderCallback"; import ImageLayer from "./ImageLayer"; import ContourLayer from "./ContourLayer"; import LayerCollection from "./LayerCollection"; import DemProvider from "./DemProvider"; import ImageProvider from "./ImageProvider"; import PointCloudCollection from "./PointCloudCollection"; import PointCloud from "./PointCloud"; import { Vector2, Vector3 } from "./GeoMath"; import GeoPoint from "./GeoPoint"; import Scene from "./Scene"; import B3dCollection from "./B3dCollection"; import B3dScene from "./B3dScene"; import { StyleManager } from "./vectile/style_manager"; import BindingBlock from "./animation/BindingBlock"; import Sun from "./Sun"; import Atmosphere from "./Atmosphere"; import SunVisualizer from "./SunVisualizer"; import Moon from "./Moon"; import MoonVisualizer from "./MoonVisualizer"; import CloudVisualizer from "./CloudVisualizer"; import StarVisualizer from "./StarVisualizer"; import LogoController from "./LogoController"; import AttributionController from "./AttributionController"; import ContainerController from "./ContainerController"; import Capture from "./Capture"; /** * 表示管理 * * mapray の表示を管理するクラスである。 */ declare class Viewer { private _container_element; private _canvas_element; private _glenv; private _camera; private _animation; private _dem_provider; private _image_provider; /** * 北側と南側の極地に関する情報 */ private _pole_info; private _layers; private _globe; private _tile_texture_cache; private _b3d_collection; private _vectile_manager; private _scene; private _ground_visibility; private _entity_visibility; private _point_cloud_visibility; private _b3d_scene_visibility; private _vectile_visibility; private _render_mode; private _debug_stats?; private _point_cloud_collection; private _render_callback; private _frame_req_id; private _previous_time?; private _is_destroyed; private _sun; private _moon; private _postProcesses; private _logo_controller; private _attribution_controller; private _atmosphere?; private _sunVisualizer?; private _moonVisualizer?; private _cloudVisualizer?; private _load_status; private _starVisualizer?; private _ω_limit; private _init_promise; /** * 表示中(直前の描画)の Flake リスト。 * @experimental */ private _flake_list; /** * container コンテナ (ID または要素) * options 生成オプション */ constructor(container: string | HTMLElement, options?: Viewer.Option); /** * 初期化 */ protected init(): Promise; /** * 初期化処理の Promise です。 * * 初期化処理の完了を待機する際に利用することができます。 * * @example * ```ts * try { * const viewer = new Viewer( ... ); * await viewer.init_promise; * // viewer の機能にアクセスします。 * } * catch( err ) { * console.error( err ); * } * ``` */ get init_promise(): Promise; /** * インスタンスを破棄 * * 次の順番で処理を行い、インスタンスを破棄する。 * * 1. アニメーションフレームを止める。({@link render_callback} の {@link RenderCallback.onUpdateFrame onUpdateFrame()} が呼び出されなくなる) * 2. {@link render_callback} の {@link RenderCallback.onStop onStop()} を呼び出す。({@link RenderCallback.onStart onStart()} がすでに呼び出されている場合) * 3. {@link RenderCallback} インスタンスを this から切り離す。({@link RenderCallback.viewer} プロパティは null を返すようになる) * 4. {@link canvas_element} を {@link container_element} から取り外す。(キャンバスは表示されなくなる) * 5. データプロバイダのリクエスト、シーンデータのロードの取り消しを試みる。 * * このメソッドを呼び出した後は this に直接的または間接的にアクセスすることはできない。ただし {@link destroy destroy()} の呼び出しは除く。 * このメソッドは {@link RenderCallback} のメソッドから呼び出してはならない。 */ destroy(): void; /** * キャンバス要素を生成 * @param container */ private _createCanvas; /** * DemProvider を生成 */ private _createDemProvider; /** * animation.BindingBlock を生成 */ private _createAnimationBindingBlock; /** * ImageProvider を生成 */ private _createImageProvider; /** * LayerCollection を生成 */ private _createLayerCollection; /** * PointCloudCollection を生成 */ private _createPointCloudCollection; /** * RenderCallback を生成 */ private _createRenderCallback; /** * ロゴ・著作権表示用コンテナの作成 */ private _createLogoAttributionContainer; /** * ロゴ・著作権表示用コンテナの削除 */ private _deleteLogoAttributionContainer; /** * コンテナ要素 (キャンバス要素を保有する) */ get container_element(): HTMLElement; /** * キャンバス要素 */ get canvas_element(): HTMLCanvasElement; /** * アニメーションパラメータ設定 */ get animation(): BindingBlock; /** * DEM データプロバイダ */ get dem_provider(): DemProvider; /** * 画像プロバイダ */ get image_provider(): ImageProvider; /** * 地図レイヤー管理 */ get layers(): LayerCollection; /** * 点群管理 */ get point_cloud_collection(): PointCloudCollection; /** * B3dScene 管理 */ get b3d_collection(): B3dCollection; /** * レンダリングコールバック */ get render_callback(): RenderCallback; /** * レンダリングモード */ get render_mode(): Viewer.RenderMode; /** * レンダリングモードを設定 */ set render_mode(val: Viewer.RenderMode); /** * デバッグ統計オブジェクト */ get debug_stats(): DebugStats | undefined; /** * カメラ */ get camera(): Camera; /** * ベクトルタイルを管理するオブジェクト * * @defaultValue `null` * * @see {@link setVectileManager}, * {@link Category.VECTILE} */ get vectile_manager(): StyleManager | null; /** * モデルシーン */ get scene(): Scene; /** * */ get logo_controller(): LogoController; /** * */ get attribution_controller(): AttributionController; /** */ get load_status(): Viewer.LoadStatus; /** */ get sun(): Sun; /** */ get moon(): Moon; /** */ get atmosphere(): Atmosphere | undefined; /** */ get sunVisualizer(): SunVisualizer | undefined; /** */ get moonVisualizer(): MoonVisualizer | undefined; /** */ get cloudVisualizer(): CloudVisualizer | undefined; /** */ get starVisualizer(): StarVisualizer | undefined; /** * 可視性を設定 * * `target` に属するオブジェクトを表示するかどうかを指定する。 * * 可視性は {@link Viewer.constructor} のオプションでも指定することができる。 * * @param target 表示対象 * @param visibility 表示するとき true, 表示しないとき false */ setVisibility(target: Viewer.Category, visibility: boolean): void; /** * 可視性を取得 * * target に属するオブジェクトを表示するかどうかを取得する。 * * @param target 表示対象 * @return 表示するとき true, 表示しないとき false */ getVisibility(target: Viewer.Category): boolean; /** * ベクトルタイルの管理オブジェクトを設定 * * `StyleManager` インスタンス `manager` を設定し、そのベクトルタ * イルをレンダリングできるようにする。 * * 以前に別の `StyleManager` インスタンスを設定していた場合は、そ * のベクトルタイルはレンダリングされなくなる。 * * `manager` に `null` を指定したとき、ベクトルタイルはレンダリン * グされなくなる。 * * 設定された値は {@link vectile_manager} により参照することができる。 * * @see {@link vectile_manager}, * {@link Category.VECTILE}, * {@link StyleManager.viewer} */ setVectileManager(manager: StyleManager | null): void; /** * 指定位置の標高を取得 * * 緯度 lat, 経度 lon が示す場所の標高を返す。 * 現在メモリに存在する DEM データの中で最も正確度が高いデータから標高を計算する。 * さらに正確度が高い DEM データがサーバーに存在すれば、それを非同期に読み込む。そのため時間を置いてこのメソッドを呼び出すと、さらに正確な値が取得できることがある。 * @param lat 緯度 (Degrees) * @param lon 経度 (Degrees) * @return 標高 (Meters) */ getElevation(lat: number, lon: number): number; /** * 現行の標高を取得 * * 現在メモリーにある最高精度の標高値を取得する。 * まだ DEM データが存在しない、または経度, 緯度が範囲外の場所は標高を 0 とする。 * * このメソッドは DEM のリクエストは発生しない。また DEM のキャッシュには影響を与えない。 * * 一般的に画面に表示されていない場所は標高の精度が低い。 * * @param position 位置 (高度は無視される) * @return 標高 * * @see {@link getExistingElevations} */ getExistingElevation(position: GeoPoint): number; /** * 現行の標高 (複数) を取得 * * 現在メモリーにある最高精度の標高値を一括で取得する。 * まだ DEM データが存在しない、または経度, 緯度が範囲外の場所は標高を 0 とする。 * * このメソッドは DEM のリクエストは発生しない。また DEM のキャッシュには影響を与えない。 * * 一般的に画面に表示されていない場所は標高の精度が低い。 * * @param num_points 入出力データ数 * @param src_array 入力配列 (経度, 緯度, ...) * @param src_offset 入力データの先頭インデックス * @param src_stride 入力データのストライド * @param dst_array 出力配列 (標高, ...) * @param dst_offset 出力データの先頭インデックス * @param dst_stride 出力データのストライド * @return dst_array * * @see {@link getExistingElevation} */ getExistingElevations(num_points: number, src_array: Float64Array | number[], src_offset: number, src_stride: number, dst_array: Float64Array | number[], dst_offset: number, dst_stride: number): number[]; /** * レイとの交点情報を取得 * * ray と最も近いオブジェクトとの交点の情報を取得する。ただし交差が存在しない場合は * undefined を返す。 * * @param ray レイ (GOCS) * @param options オプション * * @return 交点情報または undefined */ pickWithRay(ray: Ray, opts?: Viewer.PickOption): Viewer.PickResult | undefined; /** * Canvas画面のキャプチャ * * @param {object} options オプション * @return {blob} キャプチャ画像Blob */ capture(options: Capture.Option): Promise; /** * 画像プロバイダを設定 * * `clear_cache` を指定することで、切り替え時に画像キャッシュをクリアするかを指定することができます。 * 切り替え時に画像キャッシュをクリアすると瞬間的に画面全体が無地になります。 * キャッシュをクリアしない場合は、画像を入手するまでは切り替え前の画像が表示されます。 * * @param provider 画像プロバイダ * @param clear_cache 切り替え時にキャッシュをクリアするか */ setImageProvider(provider: ImageProvider, clear_cache?: boolean): Promise; /** * 北極・南極情報を設定 * * @param pole_option 極地オプション */ setPole(pole_option?: Viewer.PoleOption): void; /** * 次のフレーム更新を要求する。 */ private _requestNextFrame; /** * フレーム更新のときに呼び出される。 * @see {@link RenderStage} */ private _updateFrame; /** * 読み込み状況を集計 */ private _updateLoadStatus; /** * 現在のビューにおいて指定されたスクリーン位置の情報を取得します * @param screen_position スクリーン位置(キャンバス左上を原点としたピクセル座標) * @param pickOption ピックオプション * @return ピック結果 */ pick(screen_position: Vector2, pickOption?: Viewer.PickOption): Viewer.PickResult | undefined; /** * ω limitの設定 * @param val 0 から 6 の値が設定できる */ setOmagaLimit(val: number): void; /** * ω limitの取得 */ getOmegaLimit(): number; /** * 時間の更新 * @return 前フレームからの経過時間 (秒) */ private _updateTime; /** * Canvas サイズを更新 */ private _updateCanvasSize; /** * ポストプロセスを実行 */ private _postProcess; /** * デバッグ統計の最終処理 */ private _finishDebugStats; /** * EasyBindingBlock.DescendantUnbinder 処理 */ private _unbindDescendantAnimations; } declare namespace Viewer { interface Option { /** DEMプロバイダ */ dem_provider?: DemProvider; /** 画像プロバイダ */ image_provider?: ImageProvider; /** 地図レイヤー情報の配列 */ layers?: (ImageLayer.Option | ContourLayer.Option | ImageProvider)[]; /** 地表の可視性 */ ground_visibility?: boolean; /** 点群の可視性 */ point_cloud_visibility?: boolean; /** エンティティの可視性 */ entity_visibility?: boolean; /** B3D シーンの可視性 */ b3d_scene_visibility?: boolean; /** ベクトルタイルの可視性 */ vectile_visibility?: boolean; /** * 極地に関連するオプション * * オプションを指定すると、北側と南側の極地に関する、地表の表示と交差判定の有効性が有効となり、通常領域以外に北側と南側の極地を表示することができる。 * 省略時は極地に関する表示と交差判定は無効となる。 * * ただし現在は、{@link LayerCollection} のレイヤー画像、高度モード * ({@link Entity.altitude_mode}) が {@link AltitudeMode.ABSOLUTE} 以外の * エンティティは、通常領域にしか表示することができない。 */ pole?: PoleOption; /** レンダリングコールバック */ render_callback?: RenderCallback; /** レンダリングモード */ render_mode?: RenderMode; /** デバッグ統計オブジェクト */ debug_stats?: DebugStats; /** ロゴ表示制御オブジェクト */ logo_controller?: LogoController; /** Mapray デフォルトの著作権表示制御オブジェクト */ attribution_controller?: AttributionController; atmosphere?: Atmosphere; sun_visualizer?: SunVisualizer; moon_visualizer?: MoonVisualizer; cloud_visualizer?: CloudVisualizer; star_visualizer?: StarVisualizer; } /** * 北側と南側の極地に関するオプションの型 * * @see {@link Option.pole}, {@link Viewer.constructor}, {@link PoleInfo} */ interface PoleOption { /** * 北側極地の標高 * * @defaultValue 0.0 */ north_height?: number; /** * 南側極地の標高 * * @defaultValue 0.0 */ south_height?: number; /** * 北側極地の表示色 * * @defaultValue `[0.8, 0.8, 0.8]` */ north_color?: Vector3; /** * 南側極地の表示色 * * @defaultValue `[0.8, 0.8, 0.8]` */ south_color?: Vector3; } /** * 北側と南側の極地に関する情報 * * 各プロパティの意味は {@link PoleOption} の同名のプロパティの説明を参照 * のこと。 * * @see {@link Viewer.pole_info}, {@link PoleOption} */ class PoleInfo { readonly enabled: boolean; readonly north_height: number; readonly south_height: number; readonly north_color: Vector3; readonly south_color: Vector3; } /** * 読み込み状況を格納する型 */ interface LoadStatus { dem_loading: number; img_loading: number; b3d_loading: number; pc_loading: number; total_loading: number; } /** * ピックオプション * * {@link mapray.Viewer.pick} の引数として設定し、ピックする対象を指定する場合に使用する。 */ interface PickOption { /** 制限距離 (ray.direction の長さが単位 / pick の時はm) */ limit?: number; /** pick対象外とするCategory pickWithRayでは一部Categoryのみ対象*/ exclude_category?: Viewer.Category[]; } /** * ピック結果 * * 関数型 {@link mapray.Viewer.pick} の戻り値のオブジェクト構造である。 */ interface PickResult { /** * ピックしたオブジェクトの種類 */ category: Viewer.Category; /** ピックした位置 (GOCS) */ position: Vector3; /** ピックした位置までの距離 (ray.direction の長さが単位 / pick の時はm) */ distance: number; /** * ピックしたエンティティ。ピック位置にエンティティがない場合は `undefined` になります。 */ entity?: Entity; /** * ピックした点群。 * ピック位置に点群がない場合は `undefined` になります。 */ point_cloud?: PointCloud; /** * ピックしたB3dオブジェクトのインスタンス * (種類が Viewer.Category.B3D_SCENE のとき、追加されるプロパティ) * ピック位置にB3dがない場合は `undefined` になります。 */ b3d_scene?: B3dScene; } /** * 表示対象の列挙型 * * {@link Viewer.setVisibility} や {@link Viewer.getVisibility} などで利用される型である。 * * @see {@link PickResult.category} */ const enum Category { /** * 地表 (レイヤーも含む) */ GROUND = "@@_Viewer.Category.GROUND", /** * エンティティ */ ENTITY = "@@_Viewer.Category.ENTITY", /** * 点群 */ POINT_CLOUD = "@@_Viewer.Category.POINT_CLOUD", /** * B3D シーン */ B3D_SCENE = "@@_Viewer.Category.B3D_SCENE", /** * ベクトルタイル * * @see {@link setVectileManager}, * {@link vectile_manager} */ VECTILE = "@@_Viewer.Category.VECTILE" } /** * レンダリングモードの列挙型 * * {@link Viewer.constructor} の `options.render_mode` パラメータ、または * {@link Viewer.render_mode} プロパティに指定する値の型である。 */ const enum RenderMode { /** * ポリゴン面 (既定値) */ SURFACE = "@@_Viewer.RenderMode.SURFACE", /** * ワイヤーフレーム */ WIREFRAME = "@@_Viewer.RenderMode.WIREFRAME" } /** マウス・Attribution開発 */ const ContainerPosition: typeof ContainerController.ContainerPosition; /** ロゴ・著作権表示用コンテナ名称 */ const _positions: string[]; } type PoleInfo = Viewer.PoleInfo; export type { PoleInfo }; export default Viewer; //# sourceMappingURL=Viewer.d.ts.map