マウス位置の表示
データが地図にロードされたら、マウスの位置を表示するために入力コールバックを設定します。
if (_mapInfo) {
        view->setInputCallback(_showMousePosition, this);
    }
このコールバックは、ビューで入力イベントが発生するたびに showMousePosition メソッドを呼び出します。
void _showMousePosition(IlvView* view, IlvEvent& event, IlvAny arg)
{
    SimpleMapViewer* mapViewer = (SimpleMapViewer*) arg;
    mapViewer->showMousePosition(view, event);
}
このメソッドは最初に、情報を表示するため、いくつかのバッファーを初期化します。
void
SimpleMapViewer::showMousePosition(IlvView* view, IlvEvent& event)
{
    char buf1[12];
    char buf2[12];
    char label[50];
}
次に、マウスの位置の下に最後にあったオブジェクトを取得します、さらに、都市名として表示するそのオブジェクトの名前があれば、それも取得します。
    IlvManager* manager = _mapInfo->getManager();
 
    const char* name = "";
    IlvPoint p(event.x(), event.y());
    IlvGraphic* g = manager->lastContains(p, view);
    if (g && g->getName())
          name = g->getName();
ここで再び、
IlvMapInfo インスタンスによって、マウス位置のマネージャー座標を地理座標に変換します。
   IlvCoordinate ll;
   if (_mapInfo->inverse(event, view, ll) == IlvMaps::NoError())
       sprintf(label, "%s %s %s", 
                      IlvMaps::RadianToDMS(buf1, ll.x(), IlFalse),
                      IlvMaps::RadianToDMS(buf2, ll.y(), IlTrue),
                      name);
   else
       sprintf(label, "Unable to invert mouse position");
最後に、ステータス・バーにラベルを設定します。
    _statusBar->setLabel(label);
    _statusBar->reDraw();
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.