Auf dieser Seite

PositionSource QML Type

Der Typ „PositionSource“ liefert die aktuelle Position des Geräts. Mehr...

Import Statement: import QtPositioning

Eigenschaften

Methoden

Ausführliche Beschreibung

Der Typ „PositionSource“ liefert Informationen über die aktuelle Position des Benutzergeräts. Die Position steht als „ Position “-Typ zur Verfügung, der alle Standardparameter enthält, die typischerweise von GPS und anderen ähnlichen Systemen bereitgestellt werden, darunter Längen- und Breitengrad, Geschwindigkeit sowie Angaben zur Genauigkeit.

Da auf verschiedenen Plattformen und Geräten unterschiedliche Positionsquellen verfügbar sind, werden diese nach ihrem Grundtyp kategorisiert (Satellite, NonSatellite und AllPositioningMethods). Die für die aktuelle Plattform verfügbaren Methoden können über die Eigenschaft „ supportedPositioningMethods “ aufgelistet werden.

Um anzugeben, welche Methoden für Ihre Anwendung geeignet sind, legen Sie die Eigenschaft „ preferredPositioningMethods “ fest. Sind die bevorzugten Methoden nicht verfügbar, wird stattdessen die Standardquelle für Standortdaten der Plattform ausgewählt. Ist keine Standardquelle verfügbar (weil für die Laufzeitplattform keine installiert ist oder weil sie deaktiviert ist), wird die Eigenschaft „ valid “ auf „false“ gesetzt.

Die Eigenschaft „ updateInterval “ kann dann verwendet werden, um anzugeben, wie oft Ihre Anwendung Positionsaktualisierungen erhalten möchte. Die Methoden „ start()“, „ stop()“ und „ update()“ können zur Steuerung des Betriebs der „PositionSource“ verwendet werden, ebenso wie die Eigenschaft „ active “, deren Festlegung dem Aufruf von „ start()“ oder „ stop()“ entspricht.

Wenn die PositionSource aktiv ist, können Positionsaktualisierungen entweder einfach über die Eigenschaft „ position “ in einer Datenbindung (als Wert der Eigenschaft eines anderen Elements) abgerufen werden oder durch Bereitstellung einer Implementierung des Signal-Handlers „ onPositionChanged “.

Anwendungsbeispiel

Das folgende Beispiel zeigt eine einfache „PositionSource“, die verwendet wird, um jede Sekunde Aktualisierungen zu empfangen und den Längen- und Breitengrad auf der Konsole auszugeben.

PositionSource {
    id: src
    updateInterval: 1000
    active: true

    onPositionChanged: {
        var coord = src.position.coordinate;
        console.log("Coordinate:", coord.longitude, coord.latitude);
    }
}

Steuerung des Betriebszustands

Wie oben erwähnt, bietet „PositionSource“ zwei Möglichkeiten zur Steuerung seines Betriebszustands:

Hinweis: Es ist sehr wichtig, diese Ansätze nicht zu vermischen. Wenn eine bindbare active -Eigenschaft zur Steuerung des PositionSource-Objekts verwendet wird, später jedoch start() oder stop() aus einem anderen Teil des Codes aufgerufen wird, wird die Bindung unterbrochen, was beispielsweise dazu führen kann, dass ein UI-Element nicht mehr mit einem zugrunde liegenden Objekt verbunden ist.

Betrachten Sie das folgende Beispiel für fehlerhaften Code, bei dem die Eigenschaft „ active “ an den Zustand des CheckBox-Steuerelements gebunden ist und der Aufruf von „ stop()“ im Signal-Handler „ onClicked “ diese Bindung unterbricht.

Window {
    width: 640
    height: 480
    visible: true

    PositionSource {
        id: posSource
        name: "geoclue2"
        active: cb.checked
    }

    Column {
        anchors.centerIn: parent
        spacing: 20
        CheckBox {
            id: cb
        }
        Button {
            id: btn
            text: "Stop"
            onClicked: {
                posSource.stop()
            }
        }
    }
}

Sobald auf die Schaltfläche „Stop“ geklickt wird, wird ` stop()` ausgeführt, und die Bindung für die Eigenschaft ` active ` wird unterbrochen. Zu diesem Zeitpunkt steuert das UI-Element „CheckBox“ das `PositionSource`-Objekt nicht mehr.

Eine einfache Lösung in diesem Fall besteht darin, den Status des CheckBox-Elements über den Handler „ onClicked “ zu aktualisieren. Sobald das Kontrollkästchen deaktiviert wird, wird die Eigenschaft „ active “ benachrichtigt, und der Status des „PositionSource“-Objekts wird entsprechend aktualisiert. Die Benutzeroberfläche befindet sich dann ebenfalls in einem konsistenten Zustand.

Button {
    id: btn
    text: "Stop"
    onClicked: {
        cb.checked = false
    }
}

Hinweis: Die Verwendung von ` update()` zur Anforderung einer einzelnen Positionsaktualisierung hat keinerlei Auswirkungen auf die Bindungen der Eigenschaft ` active `, sodass beide Funktionen problemlos zusammen verwendet werden können.

Siehe auch „ QtPositioning::Position“ , „ QGeoPositionInfoSource “, „ PluginParameter “ und „Qt Bindable Properties“.

Dokumentation zu Eigenschaften

active : bool

Diese Eigenschaft gibt an, ob die Positionsquelle aktiv ist. Das Setzen dieser Eigenschaft auf „false“ entspricht dem Aufruf von „ stop “, und das Setzen dieser Eigenschaft auf „true“ entspricht dem Aufruf von „ start “.

Siehe auch „ start “, „ stop “ und „ update “.

name : string

Diese Eigenschaft enthält den eindeutigen internen Namen des Plugins, das derzeit Positionsinformationen bereitstellt.

Durch das Setzen dieser Eigenschaft wird der „ PositionSource “ dazu veranlasst, einen bestimmten Positionsanbieter zu verwenden. Ist der „ PositionSource “ zum Zeitpunkt der Änderung der Eigenschaft „name“ aktiv, wird er inaktiv. Kann der angegebene Positionsanbieter nicht geladen werden, wird die Positionsquelle ungültig.

Das Ändern der Eigenschaft „name“ kann dazu führen, dass sich auch die Eigenschaften „ updateInterval “, „ supportedPositioningMethods “ und „ preferredPositioningMethods “ ändern.

parameters : list<PluginParameter> [default, since QtPositioning 5.14]

Diese Eigenschaft enthält die Liste der Plugin-Parameter.

Diese Eigenschaft wurde in QtPositioning 5.14 eingeführt.

position : Position

Diese Eigenschaft enthält die zuletzt bekannten Positionsdaten. Es handelt sich um eine schreibgeschützte Eigenschaft.

Der Typ „Position“ verfügt über verschiedene Positions-Membervariablen, deren Gültigkeit mit entsprechenden Gültigkeitsfunktionen überprüft werden kann (beispielsweise enthält eine Aktualisierung manchmal keine Geschwindigkeits- oder Höhendaten).

Sobald jedoch ein Signal vom Typ „ positionChanged “ empfangen wurde, kann davon ausgegangen werden, dass zumindest „position::coordinate::latitude“, „position::coordinate::longitude“ und „position::timestamp“ gültig sind.

Siehe auch „ start “, „ stop “ und „ update “.

preferredPositioningMethods : enumeration

Diese Eigenschaft enthält die bevorzugten Positionierungsmethoden der aktuellen Quelle.

KonstanteBeschreibung
PositionSource.NoPositioningMethodsEs wird keine Positionsbestimmungsmethode bevorzugt.
PositionSource.SatellitePositioningMethodsSatellitengestützte Ortungsmethoden wie GPS sollten bevorzugt werden.
PositionSource.NonSatellitePositioningMethodsNicht-satellitengestützte Verfahren sollten bevorzugt werden.
PositionSource.AllPositioningMethodsJedes Ortungsverfahren ist zulässig.

sourceError : enumeration

Diese Eigenschaft enthält den zuletzt aufgetretenen Fehler bei der „ PositionSource “.

KonstanteBeschreibung
PositionSource.AccessErrorDer Verbindungsaufbau zum Remote-Positionierungs-Backend ist fehlgeschlagen, da der Anwendung die erforderlichen Berechtigungen fehlten.
PositionSource.ClosedErrorDas Positions-Backend hat die Verbindung geschlossen, was beispielsweise dann geschieht, wenn der Benutzer die Standortdienste deaktiviert. Sobald die Standortdienste wieder aktiviert sind, werden die regelmäßigen Aktualisierungen fortgesetzt.
PositionSource.NoErrorEs ist kein Fehler aufgetreten.
PositionSource.UnknownSourceErrorEs ist ein nicht identifizierter Fehler aufgetreten.
PositionSource.UpdateTimeoutErrorDie aktuelle Position konnte nicht innerhalb der festgelegten Zeitüberschreitung abgerufen werden, oder dieses PositionSource hat festgestellt, dass es keine weiteren regelmäßigen Aktualisierungen bereitstellen kann.

supportedPositioningMethods : enumeration

Diese Eigenschaft enthält die von der aktuellen Quelle unterstützten Positionierungsmethoden.

KonstanteBeschreibung
PositionSource.NoPositioningMethodsEs werden keine Ortungsmethoden unterstützt (keine Quelle).
PositionSource.SatellitePositioningMethodsSatellitengestützte Ortungsmethoden wie GPS werden unterstützt.
PositionSource.NonSatellitePositioningMethodsNicht-satellitengestützte Methoden werden unterstützt.
PositionSource.AllPositioningMethodsEs werden sowohl satellitengestützte als auch nicht-satellitengestützte Ortungsmethoden unterstützt.

updateInterval : int

Diese Eigenschaft gibt das gewünschte Intervall zwischen den Aktualisierungen an (in Millisekunden).

Siehe auch „ QGeoPositionInfoSource::updateInterval()“.

valid : bool

Diese Eigenschaft ist „true“, wenn das Objekt „ PositionSource “ ein gültiges Backend-Plugin zur Bereitstellung von Daten abgerufen hat. Ist der Wert „false“, haben andere Methoden des Objekts „ PositionSource “ keine Wirkung.

Anwendungen sollten diese Eigenschaft überprüfen, um festzustellen, ob die Positionierung auf der Laufzeitplattform verfügbar und aktiviert ist, und entsprechend reagieren.

Methodendokumentation

[since Qt Positioning 5.14] var backendProperty(string name)

Gibt den Wert der backend-spezifischen Eigenschaft „ name “ zurück, sofern vorhanden. Andernfalls – einschließlich bei Aufruf auf einem nicht initialisierten „ PositionSource “ – ist der Rückgabewert ungültig. Unterstützte backend-spezifische Eigenschaften sind unter Qt Positioning plugins#Default-Plugins aufgelistet und beschrieben.

Diese Methode wurde in Qt Positioning 5.14 eingeführt.

Siehe auch setBackendProperty und QGeoPositionInfoSource::setBackendProperty.

[since Qt Positioning 5.14] bool setBackendProperty(string name, var value)

Setzt die backend-spezifische Eigenschaft „ name “ auf „ value “. Gibt bei Erfolg „true“ zurück, andernfalls „false“ – auch wenn die Funktion für ein nicht initialisiertes „ PositionSource “ aufgerufen wird. Die unterstützten backend-spezifischen Eigenschaften sind unter Qt Positioning plugins#Default-Plugins aufgelistet und beschrieben.

Diese Methode wurde in Qt Positioning 5.14 eingeführt.

Siehe auch backendProperty und QGeoPositionInfoSource::setBackendProperty.

void start()

Fordert Aktualisierungen von der Standortquelle an. Verwendet „ updateInterval “, sofern diese festgelegt ist, andernfalls das Standardintervall. Ist keine Quelle verfügbar, hat diese Methode keine Auswirkung.

Hinweis: Der Aufruf dieser Methode löst die Bindungen der Eigenschaft „ active “ auf.

Siehe auch „ stop()“, „ update()“ und „ active “.

void stop()

Beendet die Aktualisierungen aus der Standortquelle. Wenn keine Quelle verfügbar oder diese nicht aktiv ist, hat diese Methode keine Auswirkung.

Hinweis: Der Aufruf dieser Methode löst die Bindungen der Eigenschaft „ active “ auf.

Siehe auch „ start()“, „ update()“ und „ active “.

void update(int timeout)

Eine praktische Methode, um eine einzelne Aktualisierung von der Standortquelle anzufordern. Ist keine Quelle verfügbar, hat diese Methode keine Wirkung.

Ist die Positionsquelle nicht aktiv, wird sie so lange aktiviert, bis eine Aktualisierung empfangen wird oder bis die Anfrage abläuft. Die Zeitüberschreitung für die Anfrage ist quellspezifisch.

Die Zeitüberschreitungsdauer „ timeout “ wird in Millisekunden angegeben. Ist der Wert „ timeout “ gleich Null (Standardwert), wird standardmäßig eine für die Quelle angemessene Zeitüberschreitungsdauer verwendet.

Siehe auch „ start()“, „ stop()“ und „ active “.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.