QGeoPositionInfoSource Class
Die Klasse QGeoPositionInfoSource ist eine abstrakte Basisklasse für die Verteilung von Positionsdaten. Mehr...
Kopfzeile: | #include <QGeoPositionInfoSource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake: | QT += positioning |
Vererbt: | QObject |
Vererbt von: |
Öffentliche Typen
enum | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
enum | PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods } |
flags | PositioningMethods |
Eigenschaften
- minimumUpdateInterval : const int
- preferredPositioningMethods : PositioningMethods
- sourceName : const QString
- updateInterval : int
Öffentliche Funktionen
QGeoPositionInfoSource(QObject *parent) | |
virtual | ~QGeoPositionInfoSource() |
(since Qt 5.14) virtual QVariant | backendProperty(const QString &name) const |
QBindable<QGeoPositionInfoSource::PositioningMethods> | bindablePreferredPositioningMethods() |
QBindable<int> | bindableUpdateInterval() |
virtual QGeoPositionInfoSource::Error | error() const = 0 |
virtual QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0 |
virtual int | minimumUpdateInterval() const = 0 |
QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
(since Qt 5.14) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
virtual void | setUpdateInterval(int msec) |
QString | sourceName() const |
virtual QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const = 0 |
int | updateInterval() const |
Öffentliche Slots
virtual void | requestUpdate(int timeout = 0) = 0 |
virtual void | startUpdates() = 0 |
virtual void | stopUpdates() = 0 |
Signale
void | errorOccurred(QGeoPositionInfoSource::Error positioningError) |
void | positionUpdated(const QGeoPositionInfo &update) |
(since Qt 5.12) void | supportedPositioningMethodsChanged() |
Statische öffentliche Mitglieder
QStringList | availableSources() |
QGeoPositionInfoSource * | createDefaultSource(QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createDefaultSource(const QVariantMap ¶meters, QObject *parent) |
QGeoPositionInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
Ausführliche Beschreibung
Die statische Funktion QGeoPositionInfoSource::createDefaultSource() erzeugt eine Standard-Positionsquelle, die für die Plattform geeignet ist, falls eine solche vorhanden ist. Andernfalls sucht QGeoPositionInfoSource nach verfügbaren Plugins, die die Schnittstelle QGeoPositionInfoSourceFactory implementieren.
Benutzer einer QGeoPositionInfoSource Unterklasse können die aktuelle Position mit requestUpdate() abfragen, oder regelmäßige Positionsaktualisierungen mit startUpdates() und stopUpdates() starten und stoppen. Wenn eine Aktualisierung verfügbar ist, wird positionUpdated() ausgegeben. Die letzte bekannte Position kann mit lastKnownPosition() abgerufen werden.
Wenn regelmäßige Positionsaktualisierungen erforderlich sind, kann mit setUpdateInterval() angegeben werden, wie oft diese Aktualisierungen gesendet werden sollen. Wenn kein Intervall angegeben wird, werden Aktualisierungen einfach immer dann bereitgestellt, wenn sie verfügbar sind. Ein Beispiel:
// Emit updates every 10 seconds if available QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
Um ein zuvor festgelegtes Aktualisierungsintervall zu entfernen, rufen Sie setUpdateInterval() mit einem Wert von 0 auf.
Hinweis: Die Positionsquelle kann einen Mindestwert für die Aktualisierungsintervalle vorschreiben, der von minimumUpdateInterval() zurückgegeben wird.
Hinweis: Um diese Klasse vom Android-Dienst aus zu verwenden, siehe Qt Positioning auf Android.
Dokumentation der Mitgliedstypen
enum QGeoPositionInfoSource::Error
Die Aufzählung Error stellt die Fehler dar, die auftreten können.
Konstante | Wert | Beschreibung |
---|---|---|
QGeoPositionInfoSource::AccessError | 0 | Der Verbindungsaufbau zum entfernten Ortungs-Backend ist fehlgeschlagen, weil die Anwendung nicht über die erforderlichen Berechtigungen verfügte. |
QGeoPositionInfoSource::ClosedError | 1 | Das entfernte Positionierungs-Backend hat die Verbindung geschlossen, was zum Beispiel passiert, wenn der Benutzer die Ortungsdienste ausschaltet. Sobald der Ortungsdienst wieder aktiviert ist, werden die regelmäßigen Aktualisierungen wieder aufgenommen. |
QGeoPositionInfoSource::NoError | 3 | Es ist kein Fehler aufgetreten. |
QGeoPositionInfoSource::UnknownSourceError | 2 | Ein nicht identifizierter Fehler ist aufgetreten. |
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) | 4 | Wenn requestUpdate() aufgerufen wurde, zeigt dieser Fehler an, dass die aktuelle Position nicht innerhalb der angegebenen Zeitspanne abgerufen werden konnte. Wenn startUpdates() aufgerufen wurde, zeigt dieser Fehler an, dass die Unterklasse QGeoPositionInfoSource festgestellt hat, dass sie nicht in der Lage ist, weitere regelmäßige Aktualisierungen zu liefern. Im letzteren Fall würde der Fehler erst nach der Wiederaufnahme der regelmäßigen Aktualisierungen erneut ausgegeben werden. |
enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods
Definiert die Typen der Positionierungsmethoden.
Konstante | Wert | Beschreibung |
---|---|---|
QGeoPositionInfoSource::NoPositioningMethods | 0x00000000 | Keine der Positionierungsmethoden. |
QGeoPositionInfoSource::SatellitePositioningMethods | 0x000000ff | Satellitengestützte Ortungsmethoden wie GPS oder GLONASS. |
QGeoPositionInfoSource::NonSatellitePositioningMethods | 0xffffff00 | Andere Ortungsmethoden wie 3GPP-Zellenidentifizierung oder WiFi-basierte Ortung. |
QGeoPositionInfoSource::AllPositioningMethods | 0xffffffff | Satellitengestützte Ortungsmethoden, sobald verfügbar. Ansonsten nicht-satellitengestützte Methoden. |
Der Typ PositioningMethods ist ein Typedef für QFlags<PositioningMethod>. Er speichert eine ODER-Kombination von PositioningMethod-Werten.
Dokumentation der Eigenschaft
[read-only]
minimumUpdateInterval : const int
Diese Eigenschaft enthält die Mindestzeit (in Millisekunden), die zum Abrufen einer Positionsaktualisierung erforderlich ist.
Dies ist der Mindestwert, der von setUpdateInterval() und requestUpdate() akzeptiert wird.
Zugriffsfunktionen:
virtual int | minimumUpdateInterval() const = 0 |
[bindable]
preferredPositioningMethods : PositioningMethods
Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.
Legt die bevorzugten Positionierungsmethoden für diese Quelle fest.
Wenn neue Methoden eine Methode enthalten, die von der Quelle nicht unterstützt wird, wird die nicht unterstützte Methode ignoriert.
Wenn neue Methoden keine einzige Methode enthalten, die von der Quelle verfügbar/unterstützt wird, werden die bevorzugten Methoden auf den Satz von Methoden gesetzt, die die Quelle zur Verfügung hat. Wenn die Quelle keine Methode zur Verfügung hat (z. B. weil ihr Ortungsdienst ausgeschaltet ist oder sie keinen Ortungsdienst anbietet), werden die übergebenen Methoden so akzeptiert, wie sie sind.
Der Standardwert für diese Eigenschaft ist NoPositioningMethods.
Hinweis: Implementierungen von Unterklassen müssen die Basisimplementierung von setPreferredPositioningMethods()
aufrufen, um sicherzustellen, dass preferredPositioningMethods()
den richtigen Wert zurückgibt.
Siehe auch supportedPositioningMethods().
[read-only]
sourceName : const QString
Diese Eigenschaft enthält den eindeutigen Namen der verwendeten Implementierung der Positionsquelle.
Dies ist derselbe Name, der an createSource() übergeben werden kann, um eine neue Instanz einer bestimmten Positionsquellen-Implementierung zu erstellen.
Zugriffsfunktionen:
QString | sourceName() const |
[bindable]
updateInterval : int
Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.
Diese Eigenschaft enthält das gewünschte Intervall in Millisekunden zwischen den einzelnen Aktualisierungen.
Wenn das Aktualisierungsintervall nicht festgelegt ist (oder auf 0 gesetzt ist), stellt die Quelle Aktualisierungen so oft wie nötig bereit.
Wenn das Aktualisierungsintervall festgelegt ist, stellt die Quelle Aktualisierungen in einem Intervall bereit, das dem angeforderten Intervall so nahe wie möglich kommt. Wenn das angeforderte Intervall kleiner ist als minimumUpdateInterval(), wird stattdessen das Mindestintervall verwendet.
Änderungen am Aktualisierungsintervall werden so schnell wie möglich vorgenommen, die Dauer der Änderung kann jedoch von Implementierung zu Implementierung variieren. Ob die verstrichene Zeit des vorherigen Intervalls als Teil des neuen Intervalls gezählt wird oder nicht, hängt ebenfalls von der Implementierung ab.
Der Standardwert für diese Eigenschaft ist 0.
Hinweis: Implementierungen von Unterklassen müssen die Basisimplementierung von setUpdateInterval()
aufrufen, damit updateInterval()
den richtigen Wert zurückgibt.
Hinweis: Diese Eigenschaft kann nicht verwendet werden, um die Aktualisierungshäufigkeit unter iOS und macOS einzustellen, da deren APIs eine solche Möglichkeit nicht bieten. Auf diesen Systemen wird dieser Parameter nur verwendet, um UpdateTimeoutError zu setzen und ein errorOccurred Signal auszulösen, wenn die Aktualisierung nicht innerhalb des gewünschten Intervalls empfangen wird.
Dokumentation der Mitgliedsfunktionen
[explicit]
QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)
Erzeugt eine Positionsquelle mit der angegebenen parent.
[virtual noexcept]
QGeoPositionInfoSource::~QGeoPositionInfoSource()
Zerstört die Positionsquelle.
[static]
QStringList QGeoPositionInfoSource::availableSources()
Gibt eine Liste der verfügbaren Quell-Plugins zurück. Dazu gehören alle Standard-Backend-Plugins für die aktuelle Plattform.
[virtual, since Qt 5.14]
QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const
Gibt den Wert der Backend-spezifischen Eigenschaft namens name zurück, falls vorhanden. Andernfalls ist der zurückgegebene Wert ungültig. Unterstützte Backend-spezifische Eigenschaften sind aufgelistet und beschrieben in Qt Positioning plugins#Default plugins.
Diese Funktion wurde in Qt 5.14 eingeführt.
Siehe auch setBackendProperty.
[static]
QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)
Erstellt und gibt eine Positionsquelle mit der angegebenen parent zurück, die aus den Standardquellen des Systems für Positionsdaten oder aus dem Plugin mit der höchsten verfügbaren Priorität gelesen wird.
Gibt nullptr
zurück, wenn das System keine Standard-Positionsquelle hat, keine gültigen Plugins gefunden werden konnten oder der Benutzer nicht die Berechtigung hat, auf die aktuelle Position zuzugreifen.
[static, since Qt 5.14]
QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap ¶meters, QObject *parent)
Erstellt und gibt eine Positionsquelle mit der angegebenen parent zurück, die aus den Standardquellen des Systems für Positionsdaten oder aus dem Plugin mit der höchsten verfügbaren Priorität gelesen wird.
Gibt nullptr
zurück, wenn das System keine Standardpositionsquelle hat, keine gültigen Plugins gefunden werden konnten oder der Benutzer nicht die Berechtigung hat, auf die aktuelle Position zuzugreifen.
Diese Methode übergibt parameters an die Factory, um die Quelle zu konfigurieren.
Diese Funktion wurde in Qt 5.14 eingeführt.
[static]
QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)
Erzeugt und liefert eine Positionsquelle mit der angegebenen parent, indem das Plugin mit dem Namen sourceName geladen wird.
Gibt nullptr
zurück, wenn das Plugin nicht gefunden wird.
[static, since Qt 5.14]
QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent)
Erzeugt und liefert eine Positionsquelle mit der angegebenen parent, indem das Plugin mit dem Namen sourceName geladen wird.
Gibt nullptr
zurück, wenn das Plugin nicht gefunden werden kann.
Diese Methode übergibt parameters an die Factory, um die Quelle zu konfigurieren.
Diese Funktion wurde in Qt 5.14 eingeführt.
[pure virtual]
QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const
Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.
Hinweis: Seit Qt6 wird der letzte Fehler immer zurückgesetzt, wenn startUpdates() oder requestUpdate() aufgerufen wird.
[signal]
void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)
Dieses Signal wird ausgegeben, wenn ein Fehler aufgetreten ist. Der Parameter positioningError beschreibt die Art des aufgetretenen Fehlers.
[pure virtual]
QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
Liefert ein Update mit der letzten bekannten Position oder ein Null-Update, wenn keine verfügbar ist.
Wenn fromSatellitePositioningMethodsOnly true ist, wird die letzte bekannte Position zurückgegeben, die von einer Satellitenpositionierungsmethode empfangen wurde; wenn keine verfügbar ist, wird ein Null-Update zurückgegeben.
[signal]
void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
Wenn startUpdates() oder requestUpdate() aufgerufen wird, wird dieses Signal ausgegeben, wenn eine Aktualisierung verfügbar wird.
Der Wert update enthält den Wert der neuen Aktualisierung.
[pure virtual slot]
void QGeoPositionInfoSource::requestUpdate(int timeout = 0)
Versucht, die aktuelle Position zu ermitteln und sendet positionUpdated() mit dieser Information. Wenn die aktuelle Position nicht innerhalb der angegebenen timeout (in Millisekunden) gefunden werden kann oder wenn timeout kleiner ist als der von minimumUpdateInterval() zurückgegebene Wert, wird ein errorOccurred()-Signal mit UpdateTimeoutError gesendet.
Ist die Zeitüberschreitung gleich Null, wird die Zeitüberschreitung auf eine für die Quelle angemessene Zeitspanne zurückgesetzt.
Dies hat keine Auswirkungen, wenn eine andere Aktualisierungsanforderung im Gange ist. Es kann jedoch auch dann aufgerufen werden, wenn startUpdates() bereits aufgerufen wurde und regelmäßige Aktualisierungen im Gange sind.
Wenn die Quelle mehrere Positionierungsmethoden verwendet, wird versucht, die aktuelle Position von der genauesten Positionierungsmethode innerhalb des angegebenen Timeouts zu erhalten.
Hinweis: Seit Qt6 setzt diese Methode immer den letzten Fehler auf NoError zurück, bevor sie die Position anfordert.
Hinweis: Um zu verstehen, wie man diese Methode von einem Android-Dienst aus verwendet, siehe Qt Positioning auf Android.
[virtual, since Qt 5.14]
bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)
Setzt die Backend-spezifische Eigenschaft namens name auf value. Gibt bei Erfolg true
zurück, andernfalls false
. Backend-spezifische Eigenschaften können verwendet werden um das Verhalten des Positionierungssubsystems zur Laufzeit zu konfigurieren. Unterstützte Backend-spezifische Eigenschaften sind aufgelistet und beschrieben in Qt Positioning plugins#Default plugins.
Diese Funktion wurde in Qt 5.14 eingeführt.
Siehe auch backendProperty.
[pure virtual slot]
void QGeoPositionInfoSource::startUpdates()
Startet die Ausgabe von Aktualisierungen in regelmäßigen Abständen, wie von setUpdateInterval() angegeben.
Wenn setUpdateInterval() nicht aufgerufen wurde, gibt die Quelle Aktualisierungen aus, sobald sie verfügbar sind.
Ein errorOccurred()-Signal mit dem UpdateTimeoutError wird ausgegeben, wenn diese QGeoPositionInfoSource -Unterklasse feststellt, dass sie nicht in der Lage ist, regelmäßige Aktualisierungen zu liefern. Dies könnte der Fall sein, wenn ein Satellitenfix verloren geht oder ein Hardwarefehler festgestellt wird. Die Positionsaktualisierung wird wieder aufgenommen, wenn die Daten zu einem späteren Zeitpunkt verfügbar sind. Der Fehler UpdateTimeoutError wird erst wieder ausgegeben, wenn die regelmäßigen Aktualisierungen wieder aufgenommen werden.
Hinweis: Seit Qt6 setzt diese Methode den letzten Fehler immer auf NoError zurück, bevor die Aktualisierungen gestartet werden.
Hinweis: Um zu verstehen, wie man diese Methode von einem Android-Dienst aus verwendet, siehe Qt Positioning auf Android.
Unter iOS erfordert das Core Location Framework ab Version 8 zusätzliche Einträge in der Info.plist der Anwendung mit den Schlüsseln NSLocationAlwaysUsageDescription oder NSLocationWhenInUseUsageDescription und einem String, der in der Autorisierungsaufforderung angezeigt werden soll. Der Schlüssel NSLocationWhenInUseUsageDescription wird verwendet, wenn die Berechtigung zur Verwendung von Standortdiensten angefordert wird, während sich die Anwendung im Vordergrund befindet. Der Schlüssel NSLocationAlwaysUsageDescription wird verwendet, wenn die Erlaubnis zur Nutzung von Ortungsdiensten angefordert wird, wann immer die App läuft (sowohl im Vordergrund als auch im Hintergrund). Wenn beide Einträge definiert sind, hat NSLocationWhenInUseUsageDescription im Vordergrundmodus Vorrang.
[pure virtual slot]
void QGeoPositionInfoSource::stopUpdates()
Beendet die regelmäßige Ausgabe von Updates.
[pure virtual]
QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const
Gibt die für diese Quelle verfügbaren Positionierungsmethoden zurück. Die Verfügbarkeit ist definiert als nutzbar zum Zeitpunkt des Aufrufs dieser Funktion. Daher werden Benutzereinstellungen, wie z. B. die Deaktivierung des Ortungsdienstes oder Beschränkungen auf satellitengestützte Positionsanbieter, von dieser Funktion berücksichtigt. Laufzeitbenachrichtigungen, wenn sich der Status ändert, können über supportedPositioningMethodsChanged() abgerufen werden.
Nicht alle Plattformen unterscheiden die verschiedenen Ortungsmethoden oder teilen die aktuelle Benutzerkonfiguration des Geräts mit. Die folgende Tabelle gibt einen Überblick über die aktuelle Plattformsituation:
Plattform | Kurzbeschreibung |
---|---|
Android | Der individuelle Providerstatus und der allgemeine Status des Ortungsdienstes sind bekannt und werden mitgeteilt, wenn der Ortungsdienst aktiv ist. |
GeoClue | Fest eingestellt, um immer AllPositioningMethods zurückzugeben. |
GeoClue2 | Einzelne Anbieter sind nicht unterscheidbar, aber deaktivierte Ortungsdienste werden angezeigt. |
iOS | Festgelegt, dass immer AllPositioningMethods zurückgegeben wird. |
macOS | Festgelegt, um immer AllPositioningMethods zurückzugeben. |
Windows (UWP) | Einzelne Anbieter sind nicht unterscheidbar, aber deaktivierte Standortdienste werden angezeigt. |
Siehe auch supportedPositioningMethodsChanged() und setPreferredPositioningMethods().
[signal, since Qt 5.12]
void QGeoPositionInfoSource::supportedPositioningMethodsChanged()
Dieses Signal wird ausgesendet, wenn sich die unterstützten Ortungsmethoden geändert haben. Die Ursache für eine Änderung könnte sein, dass ein Benutzer die Ortungsdienste ein- oder ausschaltet oder die Ortungsdienste auf bestimmte Arten beschränkt (z. B. nur GPS). Beachten Sie, dass Änderungen an den unterstützten Ortungsmethoden nicht auf allen Plattformen erkannt werden können. supportedPositioningMethods() bietet einen Überblick über die aktuelle Plattformunterstützung.
Diese Funktion wurde in Qt 5.12 eingeführt.
© 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.