エラーおよびロード・オン・デマンド・イベントの管理
ロード・オン・デマンド機構では、メモリーに問題がある、データがない、サーバーへの接続が失われているなどの理由で、地図をすべてロードできない場合にエラーを生成することがあります。アプリケーションは、これらのエラーを取得し、ユーザーに表示中の地図が完全なものでないことを通知する必要があります。
これらのイベントや、ロード・オン・デマンドに関する他のイベントをすべて通知するために、
IlvTileListener を
IlvTileController クラスのインスタンスに設定できます。このリスナーには、タイルへの変更がすべて通知され、タイルのステータスを変更するたびに
tileChanged メソッドが呼び出されます。キャッシュ機構に関連するイベントは、
IlvTileCache クラスをサブタイプ化することで使用できます。
void IlvTileCache::tileAboutToLoad(IlvTile* tile) 指定した tile のロード直前に呼び出されます。
void IlvTileCache::tileCached(IlvTile* tile) 指定した tile をキャッシュに挿入する場合に、呼び出されます。
void IlvTileCache::tileRetrieved(IlvTile* tile) 指定したタイルをキャッシュから削除する場合に、呼び出されます。
次の例では、ロード・オン・デマンドに関するイベントをすべて表示します。
static const char* toString(IlvTileStatus status) { switch(status) { case IlvTileEmpty: return “IlvTileEmpty”; case IlvTileLocked: return “IlvTileLocked”; case IlvTileCached: return “IlvTileCached”; case IlvTileDeleted: return “IlvTileDeleted”; } } void Listener::tileChanged(IlvTile* tile, IlvTileStatus oldStatus, IlvTileStatus newStatus) { IlvPrint(“tile %d %d status changed from %s to %s”, tile->getRow(), tile->getColumn(), toString(oldStatus), toString(newStatus)); } void SimpleLod::listener() { _listener = new Listener(_manager, _view); _tiledLayer->getTileController()->addTileListener(_listener); } |
タイル・リスナーには、次のような様々なタイプのイベントが送信されます。
IlvTileEmpty - タイルの初期ステータス (タイルに含まれるオブジェクトはありません)。
IlvTileLocked - メモリーにタイルをロードしたときにトリガーされます。
IlvTileCached - 未使用のタイルをキャッシュに格納したときにトリガーされます。
IlvTileDeleted - タイルを完全に解放したときにトリガーされます。
ビューのイベントがタイル上でアクションを実行すると、タイル・コントローラはアクションのタイトル・リスナーに通知します。このイベントが一連の移行イベントをトリガーすると、それらの移行イベントはグループでリスナーに送信されます。したがって、縮尺を変更すると、新しいタイルはロードされ、他のタイルはキャッシュされます。イベントをグループ化すると、生成されたすべての移行イベントが完了した場合のみアクションを実行できます。イベント・グループの開始は下記の
beginGroupedNotification メソッドの呼び出しによって通知され、終了は下記の
endGroupedNotification メソッドの呼び出しによって通知されます。
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.