コンテンツにスキップ

QFieldプラグイン

QFieldにはQML/Javascriptプラグイン・フレームワークがあり、このフレームワークを通して新しい機能をスクリプトとして追加することができます。

プラグインの種類

プラグインは2つの方法で提供することができます:

  • プロジェクト固有のプラグインとして、プロジェクト・セッションの間アクティブになります;
  • アプリケーション・プラグインとして作成し、QFieldの起動時に有効にします。

備考

プラグインを有効にする前に許可ダイアログが表示され、個々のプラグインを許可または拒否することができます。

プロジェクトのプラグイン

プロジェクトプラグインは、指定されたプロジェクトファイルのサイドカーファイルとしてデプロイされ、拡張子.qmlで同じファイル名を共有する必要があります。例えば、プロジェクトファイルが 「tree_inventory_qfield.qgs」の場合、プラグインのメインQMLファイルは 「tree_inventory_qfield.qml 」でなければなりません。

クラウドプロジェクトでは、関連する QML ファイルをローカルのクラウドプロジェクトフォルダに追加し、qfieldsync を使用して新しく追加したファイルを QGIS にアップロードするだけです。この方法により、スムーズなプラグインの展開と現場のデバイスへの更新が保証されます。

クラウド以外のプロジェクトについては、QFieldの ストレージを使用する方法を参照して、プロジェクトをデバイスにインポートする方法を学んでください。

アプリケーションのプラグイン

アプリケーションプラグインは、QFieldの設定パネルからアクセスできるプラグインポップアップからインストールされます。単に「URLからプラグインをインストール」ボタンを押して、zip圧縮されたプラグインファイルを指すURLを貼り付けるだけです。

インストールされると、プラグインはポップアップにあるプラグインリストに表示され、プラグインの有効化を切り替えるスイッチも表示されます。

プラグインの著者

QFieldプラグインをスクリプト化するには、QMLとJavascriptの基本的な知識が必要です。Qtは有用な入門チュートリアルを提供しており、読む価値があります。

QMLの環境に慣れたら、準備は完了です。これはQFieldプラグインの読み込みに成功したときにトーストメッセージを表示する最小限の例です:

import QtQuick

import org.qfield 1.0
import Theme 1.0

Item {
  Component.onCompleted: {
    iface.mainWindow().displayToast('Hello world!')
  }
}

QGISプラグインと同様に、QFieldはプラグインが活用できる多くの機能を公開する'iface'オブジェクトを提供している。

iface.mainWindow()関数はQMLのApplicationWindowインスタンスを指し、プラグインは iface.mainWindow().contentItem を使ってポップアップやアイテムを親ウィンドウにしたり、iface.mainWindow().displayToast(text) を使ってトーストメッセージを表示したりすることができます。

iface.mapCanvas()関数はマップキャンバスアイテムとそのプロパティへのアクセスを提供し、地図の範囲やスケールなどの重要なiface.mapCanvas().mapSettingsオブジェクトを含みます。また、アイテムをマップキャンバスのオーバーレイの親として使用することもできます。

iface.findItemByObjectName()関数を使うことで、プラグインはQFieldのアプリケーションウィンドウで、オブジェクト名を指定してアイテムにアクセスすることができます。これらのアイテムは関連するソースコードで見ることができます。

さらに、いくつかのiface関数によって、プラグインはQFieldインターフェイス内に要素を調和的に追加することができます: iface.addItemToPluginsToolbar(item)iface.addItemToMainMenuActionsToolbar(item)iface.addItemToCanvasActionsToolbar(item)です。これらの関数を使用することで、複数のプラグインによって追加されたアイテムが共存することが保証されます。

さらに、プロジェクトレイヤーの取得、ベクターレイヤーの編集などを可能にするユーティリティクラスがプラグイン作成者に提供されています。これらのユーティリティ・クラスについては、QFieldのソースコードのutilities classes directoryを参照してください。

QFieldのマップ・キャンバスに天気予報をオーバーレイ表示するプラグインが、このgithubリポジトリで公開されているので、そこから学ぶことができます。

ZIP圧縮されたプラグインを作成

有効なzip圧縮されたプラグインには、zipアーカイブのルートにmain.qmlファイルが含まれていなければなりません。オプションのmetadata.txtを使用して、プラグイン名、簡単な説明、作者名などの基本的な詳細を提供することもできます。典型的なmetadata.txtの内容は以下のようになります:

[general]
name=Hello World Plugin
description=This is simple and brief description.
author=OPENGIS.ch
icon=logo.svg