#include <map_view.h>
Public スロット | |
void | scrollMap (int dx, int dy) |
void | centerOnGeo (const QPointF &pos) |
> Slot:地図をスクロール | |
void | updateScene () |
シグナル | |
void | destinationChanged (const QPointF &pos) |
QGraphicsSceneの再描画 | |
void | locationChanged (const QPointF &pos, qreal theta) |
signal:現在地変更時に発火 | |
void | autoscrollToggled (bool autoscroll_is_on) |
signal: autoscroll 変更時に発火 | |
Public メソッド | |
MapView (QWidget *parent=0) | |
void | addItem (QGraphicsItem *item) |
> コンストラクタ | |
void | removeItem (QGraphicsItem *item) |
> QGraphicsItemを追加 | |
bool | isAutoScrolling () const |
>QGraphicsItemを削除 | |
Static Public 変数 | |
static const qreal | DEFAULT_PIXEL_PER_METER = 10.0 |
zoom 縮尺のデフォルト値: 単位は1mあたりのpixel数 | |
static const qreal | GRID_ZVALUE = 100.0 |
座標格子グリッドのZ値。地図レイヤのZ値はこれ未満とせよ | |
static const qreal | LAYER_ZVALUE_MAX = 0 |
レイヤの取りうる最大のzvalue | |
Protected メソッド | |
void | sceneContextMenuEvent (QGraphicsSceneContextMenuEvent *e) |
QGraphicsSceneのContextMenuEvent ハンドラ。 eventFilter経由で呼ばれる。 | |
void | sceneMouseMoveEvent (QGraphicsSceneMouseEvent *e) |
QGraphicsSceneのMouseMoveハンドラ。地図上の現在位置表示に使用 eventFilter経由で呼ばれる。 | |
void | sceneLeaveEvent (QEvent *e) |
QGraphicsSceneのLeaveイベントハンドラ。Sceneからマウスが外れた。 地図上の現在位置表示のために使用 | |
void | updateGridExtent () |
本widgetが管理するMapGridの表示範囲を更新。itemの追加,削除 時に呼ばれる | |
bool | eventFilter (QObject *target, QEvent *event) |
イベントフィルタ。 | |
bool | save (const QImage &image) |
画像を保存する。 | |
Private スロット | |
void | takeSnapShot () |
表示地図全体のsnapshot作成 | |
void | takeWindowSnapShot () |
表示windowのsnapshot作成 | |
void | resetView () |
viewをリセット(zoom,位置初期化) | |
void | setupMatrix () |
scene->view変換行列の計算 | |
void | zoomIn () |
一段zoomIn | |
void | zoomOut () |
一段zoomOut | |
void | toggleGrid (int state) |
Grid表示/非表示変更 | |
void | toggleAutoScroll (int state) |
自動スクロール変更 | |
void | setDestination () |
目的地を設定 | |
void | setLocation () |
現在地を設定 | |
void | onGridSpacingChanged (qreal xGridSpacing, qreal xFineGridSpacing, qreal yGridSpacing, qreal yFineGridSpacing) |
Private 変数 | |
QGraphicsView * | view_ |
地図表示用QGraphicsView | |
QGraphicsScene * | scene_ |
地図表示用QGraphicsScene | |
QSlider * | zoomSlider_ |
zoom変更用スライダ | |
QLabel * | scaleLabel_ |
縮尺表示ラベル | |
QLabel * | posLabel_ |
カーソル位置表示用ラベル | |
MapGrid * | mapGrid_ |
座標格子 | |
QAction * | setDestinationAction_ |
Action: 目的地設定 | |
QAction * | setLocationAction_ |
Action: 現在地設定 | |
QAction * | snapshotAction_ |
Action: 地図snapshot作成 | |
QAction * | snapshotWindowAction_ |
Action: Window Snapshot作成 | |
bool | is_autoscrolling_ |
flag: auto scrollのOn/Off |
QGraphicsView/QGraphicsSceneを持つ表示画面と,各種操作用 (zoom/scroll等) のwidgetから成る。MapLayerはQGraphicsItemから派生す るため,QGraphicsItemとして表示される。
地図レイヤの他に,特殊なQGraphicsItemとしてMapGridを内部管理する。 MapGridは全ての地図レイヤの上に描画される座標格子である。
MapGridはZ値としてGRID_ZVALUE値を持つ。ほかのMapLayerがこれより小さ なZ値を持つ(というルールを守る)ことで,Gridの最上位への描画を実現し ている。
MapView::MapView | ( | QWidget * | parent = 0 |
) |
void MapView::addItem | ( | QGraphicsItem * | item | ) |
> コンストラクタ
void MapView::removeItem | ( | QGraphicsItem * | item | ) |
> QGraphicsItemを追加
bool MapView::isAutoScrolling | ( | ) | const [inline] |
>QGraphicsItemを削除
void MapView::scrollMap | ( | int | dx, | |
int | dy | |||
) | [slot] |
void MapView::centerOnGeo | ( | const QPointF & | pos | ) | [slot] |
> Slot:地図をスクロール
地図座標のposをcenterにする。 地図座標をGraphicsView座標に変換してQGraphicsViewcenterOn()を 呼ぶため,点がポートの外部に近い場合は厳密に中央にはならない。
void MapView::updateScene | ( | ) | [slot] |
void MapView::destinationChanged | ( | const QPointF & | pos | ) | [signal] |
QGraphicsSceneの再描画
signal:目的地変更時に発火
void MapView::locationChanged | ( | const QPointF & | pos, | |
qreal | theta | |||
) | [signal] |
signal:現在地変更時に発火
pos | 設定する自己の現在地 | |
theta | 方位角[rad] |
void MapView::autoscrollToggled | ( | bool | autoscroll_is_on | ) | [signal] |
signal: autoscroll 変更時に発火
void MapView::sceneContextMenuEvent | ( | QGraphicsSceneContextMenuEvent * | e | ) | [protected] |
QGraphicsSceneのContextMenuEvent ハンドラ。 eventFilter経由で呼ばれる。
void MapView::sceneMouseMoveEvent | ( | QGraphicsSceneMouseEvent * | e | ) | [protected] |
QGraphicsSceneのMouseMoveハンドラ。地図上の現在位置表示に使用 eventFilter経由で呼ばれる。
void MapView::sceneLeaveEvent | ( | QEvent * | e | ) | [protected] |
QGraphicsSceneのLeaveイベントハンドラ。Sceneからマウスが外れた。 地図上の現在位置表示のために使用
void MapView::updateGridExtent | ( | ) | [protected] |
本widgetが管理するMapGridの表示範囲を更新。itemの追加,削除 時に呼ばれる
bool MapView::eventFilter | ( | QObject * | target, | |
QEvent * | event | |||
) | [protected] |
イベントフィルタ。
bool MapView::save | ( | const QImage & | image | ) | [protected] |
画像を保存する。
void MapView::takeSnapShot | ( | ) | [private, slot] |
表示地図全体のsnapshot作成
void MapView::takeWindowSnapShot | ( | ) | [private, slot] |
表示windowのsnapshot作成
void MapView::resetView | ( | ) | [private, slot] |
viewをリセット(zoom,位置初期化)
void MapView::setupMatrix | ( | ) | [private, slot] |
scene->view変換行列の計算
void MapView::zoomIn | ( | ) | [private, slot] |
一段zoomIn
void MapView::zoomOut | ( | ) | [private, slot] |
一段zoomOut
void MapView::toggleGrid | ( | int | state | ) | [private, slot] |
Grid表示/非表示変更
void MapView::toggleAutoScroll | ( | int | state | ) | [private, slot] |
自動スクロール変更
void MapView::setDestination | ( | ) | [private, slot] |
目的地を設定
void MapView::setLocation | ( | ) | [private, slot] |
現在地を設定
グリッドの間隔が変化したときにコールされ,ラベルを変更
void MapView::onGridSpacingChanged | ( | qreal | xGridSpacing, | |
qreal | xFineGridSpacing, | |||
qreal | yGridSpacing, | |||
qreal | yFineGridSpacing | |||
) | [private, slot] |
const qreal MapView::DEFAULT_PIXEL_PER_METER = 10.0 [static] |
zoom 縮尺のデフォルト値: 単位は1mあたりのpixel数
const qreal MapView::GRID_ZVALUE = 100.0 [static] |
座標格子グリッドのZ値。地図レイヤのZ値はこれ未満とせよ
const qreal MapView::LAYER_ZVALUE_MAX = 0 [static] |
レイヤの取りうる最大のzvalue
QGraphicsView* MapView::view_ [private] |
地図表示用QGraphicsView
QGraphicsScene* MapView::scene_ [private] |
地図表示用QGraphicsScene
QSlider* MapView::zoomSlider_ [private] |
zoom変更用スライダ
QLabel* MapView::scaleLabel_ [private] |
縮尺表示ラベル
QLabel* MapView::posLabel_ [private] |
カーソル位置表示用ラベル
MapGrid* MapView::mapGrid_ [private] |
座標格子
QAction* MapView::setDestinationAction_ [private] |
Action: 目的地設定
QAction* MapView::setLocationAction_ [private] |
Action: 現在地設定
QAction* MapView::snapshotAction_ [private] |
Action: 地図snapshot作成
QAction* MapView::snapshotWindowAction_ [private] |
Action: Window Snapshot作成
bool MapView::is_autoscrolling_ [private] |
flag: auto scrollのOn/Off