画像プロバイダフック

独自の画像プロバイダを作成する際に利用します。

オブジェクトによる実装 単純な動作の場合は下記のように簡易的に実装することができます。

Example

viewer.setImageProvider(new ImageProvider({
init: () => {
// 必要に応じて初期化します。
},
requestTile: ( z, x, y ) => {
// タイルを取得します。
},
}));

クラスによる実装 下記のように実装することで、複雑なプロバイダを記述することができます。

Example

// クラスとして定義
class ProviderHook implements mapray.ImageProvider.Hook {
constructor( id, option ) {
// タイルへのアクセスに必要な情報などを受け取る
}
async init() {
// 認証やログインなどを行い、アクセスできるようにする
}
async requestTile( z, x, y ) {
// 実際にデータにアクセスする
}
}

// インスタンス化して実装
viewer.setImageProvider( new ProviderHook( "id", { token: "xxxxxx" } ) );
interface Hook {
    init(options?): Promise<mapray.ImageProvider.Info>;
    requestTile(z, x, y, options?): Promise<SupportedImageTypes>;
}

Implemented by

Methods

  • タイルプロバイダを初期化しリクエストできる状態にします。

    • リクエストできる状態に遷移できなかった場合は必ず例外をスローします
    • この関数は2回以上呼ばれることはありません

    Parameters

    • Optional options: {
          signal?: AbortSignal;
      }
      • Optional signal?: AbortSignal

    Returns Promise<mapray.ImageProvider.Info>

    タイルプロバイダの情報

  • タイルをリクエストします。

    座標が (z, x, y) のタイルデータを要求します。 Hook.init の呼び出しに成功した場合に、レンダラが必要なタイミングで何度も呼び出します。

    Parameters

    • z: number

      ズームレベル

    • x: number

      X タイル座標

    • y: number

      Y タイル座標

    • Optional options: {
          signal?: AbortSignal;
      }
      • Optional signal?: AbortSignal

    Returns Promise<SupportedImageTypes>

    リクエスト結果