最小限の地図 (QML)
Qt Quickを使って地図を表示するための最小限のコードです。
Minimal Mapは、Map を使って地図を表示する方法を示しています。地図を表示するために必要な最小限のコードを示しており、さらなる実験の基礎として使うことができます。
例を実行する
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳しくは、Building and Running an Exampleをご覧ください。
C++ コード
main.cpp
では、QGuiApplication とQQmlApplicationEngine のクラスだけを使います。
#include <QGuiApplication> #include <QQmlApplicationEngine>
メイン関数では、まずQGuiApplication オブジェクトをインスタンス化します。次にQQmlApplicationEngine を作成し、Qt Resource System からmain.qml
をロードするように指示します。
最後に、QGuiApplication::exec ()でメインイベントループを開始します。
int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }
QMLコード
main.qml
では、QtLocation QML モジュールと、それに依存するQtPositioning QML モジュールをインポートしています。次に、トップレベルのウィンドウを作成し、適切なデフォルトサイズを設定し、表示できるようにします。ウィンドウは地図を表示するMap アイテムで満たされます。
import QtQuick import QtLocation import QtPositioning Window { width: Qt.platform.os == "android" ? Screen.width : 512 height: Qt.platform.os == "android" ? Screen.height : 512 visible: true title: map.center + " zoom " + map.zoomLevel.toFixed(3) + " min " + map.minimumZoomLevel + " max " + map.maximumZoomLevel Plugin { id: mapPlugin name: "osm" } Map { id: map anchors.fill: parent plugin: mapPlugin center: QtPositioning.coordinate(59.91, 10.75) // Oslo zoomLevel: 14 property geoCoordinate startCentroid PinchHandler { id: pinch target: null onActiveChanged: if (active) { map.startCentroid = map.toCoordinate(pinch.centroid.position, false) } onScaleChanged: (delta) => { map.zoomLevel += Math.log2(delta) map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position) } onRotationChanged: (delta) => { map.bearing -= delta map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position) } grabPermissions: PointerHandler.TakeOverForbidden } WheelHandler { id: wheel // workaround for QTBUG-87646 / QTBUG-112394 / QTBUG-112432: // Magic Mouse pretends to be a trackpad but doesn't work with PinchHandler // and we don't yet distinguish mice and trackpads on Wayland either acceptedDevices: Qt.platform.pluginName === "cocoa" || Qt.platform.pluginName === "wayland" ? PointerDevice.Mouse | PointerDevice.TouchPad : PointerDevice.Mouse rotationScale: 1/120 property: "zoomLevel" } DragHandler { id: drag target: null onTranslationChanged: (delta) => map.pan(-delta.x, -delta.y) } Shortcut { enabled: map.zoomLevel < map.maximumZoomLevel sequence: StandardKey.ZoomIn onActivated: map.zoomLevel = Math.round(map.zoomLevel + 1) } Shortcut { enabled: map.zoomLevel > map.minimumZoomLevel sequence: StandardKey.ZoomOut onActivated: map.zoomLevel = Math.round(map.zoomLevel - 1) } } }
Plugin アイテムは使用するマッププロバイダを定義するために必要です。この例は、利用可能なジオ・サービス・プラグインのどれでも動作します。しかし、プラグインによっては、正しく機能するために追加のプラグインパラメータが必要な場合があり、PluginParameter を使って指定することができます。この例では、osm
プラグインを使用します。これはQt Location Open Street Map プラグインで、パラメータを必要としません。
Map の項目で、使用するplugin
を参照し、地図のcenter
とzoomLevel
を設定します。
必要条件
この例では、OpenStreetMap
マップタイルをダウンロードするためのインターネット接続が必要です。オプションのシステムプロキシは自動的にピックアップされます。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。