落雷ビューア
Qt Quick、Qt Location、Qt Positioning、Qt Websockets を組み合わせて、落雷をリアルタイムに地図上に表示するレスポンシブ UI アプリケーションです。
サンプルを実行する
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。
概要
Lightning Viewerは、WebSocket から模擬落雷データを受信し、リアルタイムで地図上に表示するアプリケーションです。横向きでも縦向きでも、モバイル、タブレット、デスクトップサイズの画面にうまく適応するレスポンシブ UI が特徴です。落雷は地図上にアイコンとして表示され、別のオーバーレイには最後の落雷の距離と時間が表示される。これらのデータレイヤーは、マップレイヤーボタンを押すと表示されるトグルで、非表示にしたり表示したりすることができる。また、マップの種類を切り替えるスイッチや、ユーザーの位置でマップを中央に表示するボタンもある。
アプリケーションの構造
このアプリケーションはModel-View-Controller(MVC)パターンに従っている。LightningItemModel
クラスがモデルとして機能します。LightningItemData
オブジェクトのリストを保存し、新しいデータを挿入したり、最新のストライクに関する情報を取得するメソッドを提供します。Viewは複数のQMLコンポーネントで定義され、データとユーザーインターフェイスを表示し、ユーザーとのインタラクションを処理します。Controller
クラスは、LightningItemModel
と QML コンポーネント間のデータフローを管理します。LightningProvider
クラスは、オンライン サーバーへのWebSocket 接続を開き、そこから模擬落雷ごとに JSON メッセージを受信します。メッセージを解析し、Controller
のスロットに接続された信号を介してLightningItemModel
にデータを渡します:
connect(m_provider.get(), &LightningProvider::dataReady, this, &Controller::onDataReceived);
各落雷はLightningItemData
構造体で表される。この構造体には、落雷のタイムスタンプ、緯度、経度が含まれ、QGeoCoordinate として提供されたユーザー位置からの距離と方向を返すメソッドが含まれています。LastStrikeInfo
構造体には、最後の落雷に関する情報が保持されます。
LightningView.qml
は、アプリケーションのメインビューとして機能します。このビューは、 コンポーネントを通してマップと雷データを表示し、 コンポーネントを通してユーザーコントロールを表示します。MapView.qml
ActionsLayer.qml
MapView.qml
は地図のズームとパンを処理します。 を使ってユーザーの現在地を取得し、 を使って地図を表示します。さらに、雷データを表示するための と、最後の落雷に関する情報を表示するための があります。PositionSource Map LightningMapLayer.qml
DistanceTimeLayer.qml
ActionsLayer.qml
は、マップを再中央化するためのボタンと、異なるマップ・タイプを切り替えるためのカスタム・スイッチ・コントロール( )を提供します。また、マップレイヤートグルを表示するマップレイヤボタンもあります。これらのトグルは で定義されています。横向きではマップレイヤーボタンの隣に表示され、横向きでは で定義された に配置されます。SwitchMap.qml
MapLayersItem.qml
MapLayersDrawer.qml
Drawer
落雷データソース
このアプリケーションは、Qt が管理するサーバーから落雷のシミュレーションデータを受信します。サーバーは WebSocket API を提供し、以下の URL で接続を受け付けています:
wss://ewea0y4bn0.execute-api.eu-north-1.amazonaws.com/production/
サーバーに接続後、アプリケーションは以下の JSON メッセージをサーバーに送信することで、ライブ データ フィードをトリガーします:
"{\"action\": \"simulatelightningdata\"}"
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。