Sample クラス、Main 関数、コンストラクターの定義
クラス
このサンプルはクラス SimpleMapViewer として実装され、地図をロードし都市を作成します。
次のようなフィールドが含まれます。
  private:
    IlvGadgetContainer* _container;
    IlvSCManagerRectangle* _managerRectangle;
    IlvMapInfo* _mapInfo;
    IlvTextField* _statusBar;
ここで、
_container はこのアプリケーションのトップ・ウィンドウ、
_managerRectangle は 
IlvManager と 
IlvView を組み合わせ、
_mapinfo フィールドは 
IlvMapInfo インスタンスで、地図座標系からマネージャー座標系に座標を変換するための情報を格納します。地図情報は 
.ilv ファイルとともに保存されるため、地図ファイルをロードする際にこのフィールドが初期化されます。そのため、地図上に都市を位置付けたり、地図上にマウスのポインターで示された位置に対応する地理座標を表示するために、このフィールドが使用できます。これらの地理座標は、ステータス・バーとして機能する 
IlvTextField に格納されます。
Main 関数
Main 関数は、
IlvDisplay を初期化し、
SimpleMapViewer クラスのインスタンスを作成してから、Rogue Wave Views のメイン・ループに入ります。
int main(int, char**)
{
    IlvDisplay* display = new IlvDisplay("Map Viewer");
    if (display->isBad()) {
        IlvPrint("Cannot create the display");
        return 1;
    }
    SimpleMapViewer*  viewer = new SimpleMapViewer(display,
                                                   "../data/usa.ilv");
    IlvMainLoop();
    return 0;
}
コンストラクター
SimpleMapViewer のコンストラクターは、次の 2 つのアクションを実行します。クラスのインターフェース・コンポーネントを作成し、次に地図データをロードします。
SimpleMapViewer::SimpleMapViewer(IlvDisplay* display,
                                 const char* fileName)
    :_managerRectangle(0),
     _statusBar(0),
     _container(0),
     _mapInfo(0)
   
{
    createGUI(display);
    loadMap(fileName);
}
createGUI メソッドは、アプリケーションのトップ・ビューである 
IlvGadgetContainer のインスタンスを作成し、次に、地図を含むコンテナーの ManagerRectangle を作成するメソッドおよび、ツールバーを作成するメソッドを呼び出します。
 void
SimpleMapViewer::createGUI(IlvDisplay* display)
{
    _container = new IlvGadgetContainer(display,
                                        ?SimpleMapViewer",
                                        "Integrating projections and graphics",
                                        IlvRect(50, 50, 450, 450),
                                        IlFalse);
    _container->setDestroyCallback(_exit, this);
    createManagerRectangle(_container);
    createStatusBar(_container);
}
createManagerRectangle メソッドは、地図を格納するマネージャーを作成し、ビューを初期化します。
void
SimpleMapViewer::createManagerRectangle(IlvGadgetContainer* container)
{
    _managerRectangle = new IlvSCManagerRectangle(container->getDisplay(),
                                                  IlvRect(0, 0, 450, 435));
    container->addObject(_managerRectangle);
 
    // Attachments.
    container->getHolder()->attach(_managerRectangle, IlvHorizontal);
    container->getHolder()->attach(_managerRectangle, IlvVertical);
 
    IlvManager* manager = _managerRectangle->getManager();
    IlvView* view = _managerRectangle->getView();
 
    manager->setKeepingAspectRatio(view, IlTrue);
    manager->setDoubleBuffering(view, IlTrue);
}
次に、
createStatusBar メソッドが、ステータス・バーとして使用される 
IlvTextField を作成し、付加します。
void
SimpleMapViewer::createStatusBar(IlvGadgetContainer* container)
{
    _statusBar = new IlvTextField(container->getDisplay(),
                                  "",
                                  IlvRect(0, 435, 450, 15));
    container->addObject(_statusBar, IlTrue);
 
    _statusBar->setEditable(IlFalse);
 
    // Attachments.
    container->getHolder()->attach(_statusBar, IlvHorizontal);
    container->getHolder()->attach(_statusBar, IlvVertical, 1, 0, 0);
}
グラフィック・インターフェースの準備ができたら、地図をロードできます。
void
SimpleMapViewer::loadMap(const char* fileName)
{
    IlvManager* manager = _managerRectangle->getManager();
    IlvView* view = _managerRectangle->getView();
    manager->read(fileName);
    _mapInfo = IlvMapInfo::Get(manager);
    if (_mapInfo) {
        view->setInputCallback(_showMousePosition, this);
        addCities();
    }
    manager->fitTransformerToContents(view, IlTrue);
}
地図がロードされたら、.ilv ファイルに保存されていた地図情報を _mapinfo フィールドに格納し、入力コールバックのインストールによってマウスの位置を表示して都市を追加します。
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.