QField-Plugins¶
QField verfügt über ein integriertes QML/Javascript System, mit dem zusätzliche Funktionalitäten und Werkzeuge erstellt werden können.
Arten von Plugins¶
Plugins können auf zwei Arten bereitgestellt werden:
- als projektspezifisches Plugin, das für die Dauer einer bestimmten Projektsitzung aktiv ist oder
- als Anwendungs-Plugin, das beim Start von QField aktiviert wird.
Anmerkung
Vor der Aktivierung eines Plugins wird ein Berechtigungsdialog angezeigt, der Ihnen die Möglichkeit bietet, einzelne Plugins zuzulassen oder zu verweigern.
Projekt-Plugins¶
Projekt-Plug-Ins werden als Sidecar-Datei in einer bestimmten Projektdatei bereitgestellt und müssen denselben Dateinamen mit der Erweiterung .qml besitzen. Wenn Ihre Projektdatei beispielsweise "tree_inventory_qfield.qgs" lautet, muss die QML-Hauptdatei des Plugins "tree_inventory_qfield.qml" heißen.
Bei Cloud-Projekten fügen Sie einfach die entsprechende QML-Datei in Ihren lokalen Cloud-Projektordner hinzu und laden Sie die neu hinzugefügte Datei mit qfieldsync hoch. Diese Methode gewährleistet ein reibungslose Plugin-Bereitstellung und Aktualisierung von Geräten vor Ort.
Für Projekte, die nicht in der Cloud gespeichert sind, lesen Sie bitte die QField-Speicherhandhabung Dokumentationsseite , um zu erfahren, wie Sie Projekte auf Ihren Mobilgeräten importieren können.
Anwendungs-Plugins¶
Anwendungs-Plugins werden über ein Plugin-Popup installiert, das über die QField-Einstellungen aufgerufen werden kann. Klicken Sie einfach auf die Schaltfläche "Plugin von URL installieren" und fügen Sie eine URL ein, die auf eine gezippte Plugin-Datei verweist.
Nach der Installation wird das Plugin in der Plugin-Liste des Popup-Fensters mit einem Schalter angezeigt, um die Aktivierung des Plugins umzuschalten.
Plugin-Autoren¶
Das Skripting von QField-Plugins erfordert grundlegende Kenntnisse in QML und Javascript. Qt bietet eine nützliches und lesenswertes Einführungstutorial.
Sobald Sie sich mit der QML-Umgebung vertraut gemacht haben, kann es auch schon losgehen. Dies ist ein minimaler Beispiel, das beim erfolgreichen Laden eines QField-Plugins eine Hello World-Nachricht anzeigt:
import QtQuick
import org.qfield 1.0
import Theme 1.0
Item {
Component.onCompleted: {
iface.mainWindow().displayToast('Hello world!')
}
}
Ähnlich wie QGIS-Plugins bietet QField ein 'iface'-Objekt, das eine Reihe von Funktionen bereitstellt, die Plugins nutzen können.
Die iface.mainWindow()
-Funktion verweist auf die QML ApplicationWindow-Instanz, über die Plugins ihre Popups und Elemente via iface.mainWindow().contentItem
kontrollieren können und Zugriff auf Funktionen, wie z. B. das Anzeigen von Popupnachrichten mit iface.mainWindow().displayToast(text)
haben.
Die iface.mapCanvas()
-Funktion ermöglicht den Zugriff auf das Map-Canvas-Element und seine Eigenschaften, einschließlich des entscheidenden iface.mapCanvas().mapSettings
-Objekts, in dem die Ausdehnung, der Maßstab usw. abgerufen und geändert werden können. Es kann auch verwendet werden, um Elemente als Überlagerungen für die Kartenzeichenfläche zu kontrollieren.
Die iface.findItemByObjectName()
-Funktion ermöglicht es Plugins, mit QField's Anwendungsfenster auf Elemente mit einem übereinstimmenden Objektnamen zugreifen zu können. Sie können diese Elemente anzeigen, indem Sie den relevanten Quellcode ansehen.
Darüber hinaus ermöglichen mehrere iface-Funktionen das harmonische Hinzufügen von Elementen innerhalb der QField-Schnittstelle: iface.addItemToPluginsToolbar(item)
, iface.addItemToMainMenuActionsToolbar(item)
,
und iface.addItemToCanvasActionsToolbar(item)
. Durch die Verwendung dieser Funktionen wird sichergestellt, dass von mehreren Plugins hinzugefügte Elemente friedlich nebeneinander existieren können.
Darüber hinaus steht den Plugin-Autoren eine Reihe von Dienstprogrammklassen zur Verfügung, die es ermöglichen, Layer abzurufen, Vektorlayer zu bearbeiten und etliches mehr. Um sich mit diesen vertraut zu machen, besuchen Sie das Verzeichnis der Dienstprogrammklassen des Quellcodes von QField.
Ein Plugin, das die Wettervorhersage als Overlay für QField-Karten bereitstellt, ist als praktisches Lern-Beispiel in diesem GitHub-Repository verfügbar.
Erstellen eines gezippten Plugins¶
Ein gültiges gezipptes Plugin muss eine main.qml-Datei im Stammverzeichnis des Zip-Archivs enthalten, die von QField verwendet wird, um das Plugin zu aktivieren. Optional kann auch ein metadata.txt verwendet werden, um grundlegende Details wie den Namen des Plugins, eine kurze Beschreibung und den Namen des Autors anzugeben. Ein typischer metadata.txt
würde wie folgt aussehen:
[general]
name=Hello World Plugin
description=This is simple and brief description.
author=OPENGIS.ch
icon=logo.svg