ロード・オンデマンド機能を使用して独自のフォーマットのために新しい IlvMapDataSource を作成するには、 IlvTilableDataSource クラスから継承する必要があります。このクラスは、適切なタイルを作成し、ロード・オンデマンドを効率的に使用するためにタイル・レイヤーの構成を行うのに必要なすべての手順を実行します。地図を分割する数の行および列を選択することができます。希望によってタイル機能を非アクティブにすることもできます。しかし、次の 2 つの抽象メソッドを実装しなくてはなりません。
protected abstract void createTiledLayers(); protected IlvMapRegionOfInterestIterator createTiledIterator(IlvMapLayer layer);
このセクションで説明されているコードをすべて含む Map Builder のデモ用ソース・コードについては、
<installdir>
/jviews-maps89/samples/mapbuilder/index.html をご覧ください。
タイル・レイヤーの作成
createTiledLayers メソッドは、 IlvMapDataSource の IlvMapDataSource. その役割は、このデータ・ソースを構成するタイル・レイヤーを作成することです。例えば、データ・ソースが地図機能を異なるレイヤーにソートする場合、すべてのタイル・レイヤーはこのメソッドによって作成されなくはなりません。
このメソッドの実装例を示します。
protected void createTiledLayers() { // get the insertion layer of this datasource (i.e. the ‘root’ layer // of this data source, potentially containing children layers) IlvMapLayer mapLayer = getInsertionLayer(); // Create a tiled layer to associated with this IlvMapLayer (refer to the chapter // on tiled layers) IlvTiledLayer currentTiledLayer = new IlvTiledLayer(new IlvRect(),new IlvDefaultTileCache(),IlvTileController.FREE); // associate this layer with the IlvMapLayer mapLayer.insert(currentTiledLayer); }
地図機能の読み込み
createTiledIterator メソッドは、指定された地域に位置する地図機能上に機能イテレーターを返します。レイヤーのタイル・ローダーは、画面上で利用可能になったときにタイルをロードするためにこのイテレーターを使用します。つまり、指定地域のみのタイルの地図機能を読み込みます。
このメソッドの実装例を示します。
protected IlvMapRegionOfInterestIterator createTiledIterator(IlvMapLayer layer) throws IOException { // IlvMapLayer mapLayer = getInsertionLayer(); if (layer != mapLayer) { // the layer in parameter has nothing to do with this data source return null; } // Create your region of interest feature iterator here, // basically an iterator over map features in specified region MyRegionOfInterestIterator iterator = new MyRegionOfInterestIterator(); // configure it as needed (we assume that there is a ‘configure’ method here for // clarity purposes) iterator.configure(); // return it return iterator; }
タイル・レイヤーの作成 の createTiledLayers メソッドによってマルチタイル・レイヤーが作成された場合、異なるイテレーターが各レイヤー (つまり、
createTiledIterator()
メソッドの layer
パラメーター) 用に返されることがあります。詳しくは、「データのタイリング」を参照してください。