PositionSource QML Type

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

Import Statement: import QtPositioning

Eigenschaften

Methoden

Detaillierte Beschreibung

Der PositionSource-Typ liefert Informationen über die aktuelle Position des Benutzergeräts. Die Position ist als Typ Position verfügbar, der alle Standardparameter enthält, die typischerweise von GPS und anderen ähnlichen Systemen verfügbar sind, einschließlich Längengrad, Breitengrad, Geschwindigkeit und Genauigkeitsangaben.

Da auf verschiedenen Plattformen und Geräten unterschiedliche Positionsquellen verfügbar sind, werden diese nach ihrem Basistyp kategorisiert (Satellite, NonSatellite und AllPositioningMethods). Die verfügbaren Methoden für die aktuelle Plattform können in der Eigenschaft supportedPositioningMethods aufgezählt werden.

Um anzugeben, welche Methoden für Ihre Anwendung geeignet sind, setzen Sie die Eigenschaft preferredPositioningMethods. Wenn die bevorzugten Methoden nicht verfügbar sind, wird stattdessen die Standardquelle für Standortdaten für die Plattform gewählt. Wenn keine Standardquelle verfügbar ist (weil keine für die Laufzeitplattform 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 verwendet werden, um den Betrieb der PositionSource zu steuern, ebenso wie die Eigenschaft active, die, wenn sie gesetzt ist, einem Aufruf von start() oder stop() entspricht.

Wenn die PositionSource aktiv ist, können Positionsaktualisierungen entweder durch einfache Verwendung der position Eigenschaft in einer Bindung (als Wert der Eigenschaft eines anderen Elements) oder durch Bereitstellung einer Implementierung des onPositionChanged Signal-Handlers abgerufen werden.

Beispiel für die Verwendung

Das folgende Beispiel zeigt eine einfache PositionSource, die verwendet wird, um Aktualisierungen jede Sekunde 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);
    }
}

Kontrolle des Betriebszustandes

Wie bereits erwähnt, bietet die PositionSource zwei Möglichkeiten, ihren Betriebszustand zu steuern:

Hinweis: Es ist sehr wichtig, diese Ansätze nicht zu vermischen. Wenn eine bindbare Eigenschaft active verwendet wird, um das PositionSource-Objekt zu steuern, aber später start() oder stop() von einem anderen Teil des Codes aufgerufen wird, wird die Bindung unterbrochen, was z. B. dazu führen kann, dass ein UI-Element nicht mehr mit einem darunter liegenden Objekt verbunden ist.

Betrachten Sie das folgende Beispiel für fehlerhaften Code, bei dem die Eigenschaft active an den Zustand der CheckBox gebunden ist und der Aufruf von stop() im Signalhandler 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 die Schaltfläche " Stop" angeklickt wird, wird stop() ausgeführt, und die Bindung für die Eigenschaft active wird unterbrochen. Zu diesem Zeitpunkt steuert das CheckBox-Oberflächenelement nicht mehr das PositionSource-Objekt.

Eine einfache Lösung für diesen Fall ist die Aktualisierung des CheckBox-Status über den onClicked Handler. Sobald die CheckBox nicht mehr markiert ist, wird die Eigenschaft active benachrichtigt und der Zustand des PositionSource-Objekts wird entsprechend aktualisiert. Die Benutzeroberfläche wird ebenfalls in einem konsistenten Zustand sein.

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

Hinweis: Die Verwendung von update(), um eine einzelne Positionsaktualisierung anzufordern , hat keine Auswirkungen auf die Bindungen der active -Eigenschaft, so dass sie ohne Probleme zusammen verwendet werden können.

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

Eigenschaft Dokumentation

active : bool

Diese Eigenschaft zeigt 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 für das Plugin, das derzeit Positionsinformationen liefert.

Das Setzen dieser Eigenschaft veranlasst PositionSource, einen bestimmten Positionsanbieter zu verwenden. Wenn PositionSource zu dem Zeitpunkt, an dem die Eigenschaft name geändert wird, aktiv ist, wird es inaktiv. Wenn der angegebene Positionierungsanbieter nicht geladen werden kann, wird die Positionsquelle ungültig.

Die Änderung 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 ist eine schreibgeschützte Eigenschaft.

Der Positionstyp hat verschiedene Positionsvariablen, deren Gültigkeit mit entsprechenden Gültigkeitsfunktionen überprüft werden kann (zum Beispiel hat ein Update manchmal keine Geschwindigkeits- oder Höhendaten).

Wenn jedoch ein positionChanged -Signal 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.

  • PositionSource.NoPositioningMethods - Es wird keine Positionierungsmethode bevorzugt.
  • PositionSource.SatellitePositioningMethods - Satellitenbasierte Positionierungsmethoden wie GPS sollten bevorzugt werden.
  • PositionSource.NonSatellitePositioningMethods - Nicht-satellitengestützte Methoden sollten bevorzugt werden.
  • PositionSource.AllPositioningMethods - Alle Positionierungsmethoden sind zulässig.

sourceError : enumeration

Diese Eigenschaft enthält den Fehler, der zuletzt bei PositionSource aufgetreten ist.

  • PositionSource.AccessError - Der Verbindungsaufbau zum entfernten Positionierungs-Backend ist fehlgeschlagen, weil die Anwendung nicht über die erforderlichen Berechtigungen verfügte.
  • PositionSource.ClosedError - Das Positionierungs-Backend hat die Verbindung geschlossen, was z.B. passiert, wenn der Benutzer die Ortungsdienste ausschaltet. Sobald der Ortungsdienst wieder aktiviert ist, werden die regelmäßigen Aktualisierungen wieder aufgenommen.
  • PositionSource.NoError - Es ist kein Fehler aufgetreten.
  • PositionSource.UnknownSourceError - Ein nicht identifizierter Fehler ist aufgetreten.
  • PositionSource.UpdateTimeoutError - Die aktuelle Position konnte nicht innerhalb der angegebenen Zeitspanne abgerufen werden, oder PositionSource hat festgestellt, dass es nicht in der Lage ist, weitere regelmäßige Aktualisierungen zu liefern.

supportedPositioningMethods : enumeration

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

  • PositionSource.NoPositioningMethods - Keine Positionierungsmethoden unterstützt (keine Quelle).
  • PositionSource.SatellitePositioningMethods - Es werden satellitengestützte Ortungsmethoden wie GPS unterstützt.
  • PositionSource.NonSatellitePositioningMethods - Es werden nicht-satellitengestützte Methoden unterstützt.
  • PositionSource.AllPositioningMethods - Es werden sowohl satellitengestützte als auch nicht-satellitengestützte Ortungsmethoden unterstützt.

updateInterval : int

Diese Eigenschaft enthält das gewünschte Intervall zwischen den Aktualisierungen (Millisekunden).

Siehe auch QGeoPositionInfoSource::updateInterval().


valid : bool

Diese Eigenschaft ist true, wenn das PositionSource Objekt ein gültiges Backend-Plugin erworben hat, um Daten zu liefern. Wenn false, haben andere Methoden auf 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.


Dokumentation der Methode

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

Gibt den Wert der Backend-spezifischen Eigenschaft namens name zurück, falls vorhanden. Andernfalls, auch bei einem Aufruf mit einer nicht initialisierten PositionSource, ist der Rückgabewert ungültig. Unterstützte Backend-spezifische Eigenschaften sind in Qt Positioning plugins#Default plugins aufgeführt und beschrieben.

Diese Methode wurde in Qt Positioning 5.14 eingeführt.

Siehe auch backendProperty und QGeoPositionInfoSource::setBackendProperty.


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

Setzt die Backend-spezifische Eigenschaft namens name auf value. Gibt bei Erfolg true zurück, andernfalls false, auch wenn es bei einem nicht initialisierten PositionSource aufgerufen wird. Unterstützte Backend-spezifische Eigenschaften sind in Qt Positioning plugins#Default plugins aufgeführt und beschrieben.

Diese Methode wurde in Qt Positioning 5.14 eingeführt.

Siehe auch backendProperty und QGeoPositionInfoSource::setBackendProperty.


start()

Fordert Aktualisierungen von der Standortquelle an. Verwendet updateInterval, wenn gesetzt, ansonsten Standardintervall. Wenn keine Quelle verfügbar ist, hat diese Methode keine Wirkung.

Hinweis: Durch den Aufruf dieser Methode werden die Bindungen der Eigenschaft active aufgehoben.

Siehe auch stop, update, und active.


stop()

Stoppt Aktualisierungen von der Standortquelle. Wenn keine Quelle verfügbar oder nicht aktiv ist, hat diese Methode keine Auswirkung.

Hinweis: Durch den Aufruf dieser Methode werden die Bindungen der Eigenschaft active aufgehoben.

Siehe auch start, update, und active.


update(int timeout)

Eine bequeme Methode, um eine einzelne Aktualisierung von der Standortquelle anzufordern. Wenn keine Quelle verfügbar ist, hat diese Methode keine Auswirkung.

Wenn die Positionsquelle nicht aktiv ist, wird sie so lange aktiviert, wie sie braucht, um eine Aktualisierung zu erhalten, oder bis die Anfrage ein Timeout hat. Die Timeout-Periode der Anfrage ist quellenspezifisch.

Die timeout wird in Millisekunden angegeben. Wenn timeout gleich Null ist (der Standardwert), wird eine für die Quelle angemessene Zeitspanne als Standardwert verwendet.

Siehe auch start, stop, und active.


© 2025 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.