QGeoPositionInfoSource Class

QGeoPositionInfoSource クラスは、位置情報の更新を配信するための抽象ベースクラスです。詳細...

ヘッダー #include <QGeoPositionInfoSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
を継承する: QObject
継承元:

QNmeaPositionInfoSource

パブリックな型

enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }
enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods }
flags PositioningMethods

プロパティ

パブリック機能

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

パブリックスロット

virtual void requestUpdate(int timeout = 0) = 0
virtual void startUpdates() = 0
virtual void stopUpdates() = 0

シグナル

void errorOccurred(QGeoPositionInfoSource::Error positioningError)
void positionUpdated(const QGeoPositionInfo &update)
(since Qt 5.12) void supportedPositioningMethodsChanged()

静的パブリックメンバ

QStringList availableSources()
QGeoPositionInfoSource *createDefaultSource(QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent)
QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

詳細説明

静的関数QGeoPositionInfoSource::createDefaultSource() は、プラットフォームに適したデフォルトの位置情報ソースがあれば、それを作成します。そうでない場合、QGeoPositionInfoSource は、QGeoPositionInfoSourceFactory インターフェイスを実装する利用可能なプラグインをチェックします。

QGeoPositionInfoSource のサブクラスのユーザーは、requestUpdate() を使用して現在位置を要求したり、startUpdates() やstopUpdates() を使用して定期的な位置更新を開始したり停止したりできます。更新が可能になると、positionUpdated() が発行されます。最後の既知の位置には、lastKnownPosition ()でアクセスできる。

定期的な位置更新が必要な場合は、setUpdateInterval() を使用して、更新の間隔を指定できる。間隔が指定されていない場合は、更新があるたびに更新が行われる。例えば

// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

以前に設定した更新間隔を削除するには、値 0 を指定してsetUpdateInterval() を呼び出します。

注意 : 位置情報ソースは、minimumUpdateInterval() によって返されるように、更新間隔の最小値要件を持つ場合があります。

:Android サービスからこのクラスを使用するには、Android のQt Positioning を参照してください。

メンバ型ドキュメント

enum QGeoPositionInfoSource::Error

Error列挙は、発生する可能性のあるエラーを表します。

定数説明
QGeoPositionInfoSource::AccessError0アプリケーションに必要な権限がないため、リモートポジショニングバックエンドへの接続セットアップに失敗しました。
QGeoPositionInfoSource::ClosedError1リモートポジショニングバックエンドが接続を閉じました。これは、ユーザーがロケーションサービスをオフに切り替えている場合などに発生します。位置情報サービスが再度有効になると、すぐに通常の更新が再開されます。
QGeoPositionInfoSource::NoError3エラーは発生していません。
QGeoPositionInfoSource::UnknownSourceError2不明なエラーが発生しました。
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4requestUpdate()が呼び出された場合、このエラーは、指定されたタイムアウト時間内に現在位置を取得できなかったことを示す。startUpdates() が呼び出された場合、このエラーは、このQGeoPositionInfoSource サブクラスが、これ以上定期的な更新を提供できないと判断したことを示す。後者の場合、定期的な更新が再開されるまで、エラーは再発行されない。

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods 位置決めメソッドの種類を定義する。

測位方法の種類を定義します。

定数説明
QGeoPositionInfoSource::NoPositioningMethods0x00000000測位方法のいずれでもない。
QGeoPositionInfoSource::SatellitePositioningMethods0x000000ffGPSやGLONASSなどの衛星測位方式。
QGeoPositionInfoSource::NonSatellitePositioningMethods0xffffff003GPPセル識別子やWiFiベースの測位など、その他の測位方法。
QGeoPositionInfoSource::AllPositioningMethods0xffffffff利用可能になり次第、衛星測位方式。それ以外の非衛星ベースの測位方法。

PositioningMethods型はQFlags<PositioningMethod>のtypedefである。PositioningMethodsの値のORの組み合わせを格納する。

プロパティ・ドキュメント

[read-only] minimumUpdateInterval : const int

このプロパティは、位置更新の取得に必要な最小時間(ミリ秒)を保持する。

これは、setUpdateInterval() およびrequestUpdate() が受け付ける最小値である。

アクセス関数:

virtual int minimumUpdateInterval() const = 0

[bindable] preferredPositioningMethods : PositioningMethods

注: このプロパティは、QProperty バインディングに対応しています。

このソースの優先位置決め方法を設定します。

新しいメソッドに、ソースでサポートされていないメソッドが含まれている場合、サポートされていないメソッドは無視されます。

新しいメソッドに、ソースが使用可能またはサポートするメソッドが 1 つも含まれていない場合、優先メソッドは、ソースが使用可能なメソッドのセットに設定されます。ソースに使用可能なメソッドがない場合 (そのソースの Location サービスがオフになっている、または Location サービスを提供していないなど)、渡されたメソッドはそのまま受け入れられます。

このプロパティの既定値はNoPositioningMethods です。

注意: サブクラスの実装では、preferredPositioningMethods() が正しい値を返すように、setPreferredPositioningMethods() の基本実装を呼び出す必要があります。

supportedPositioningMethods()も参照してください

[read-only] sourceName : const QString

このプロパティは、使用中のポジション・ソース実装の一意の名前を保持します。

これは、特定のポジション・ソース実装の新しいインスタンスを作成するためにcreateSource() に渡すことができる名前と同じです。

アクセス関数:

QString sourceName() const

[bindable] updateInterval : int

注: このプロパティはQProperty バインディングに対応している。

このプロパティは、各更新の要求間隔をミリ秒単位で保持します。

更新間隔が設定されていない場合 (または 0 に設定されている場合)、ソースは必要な頻度で更新を提供します。

更新間隔が設定されている場合、ソースは、要求された間隔にできるだけ近い間隔で更新を提供します。要求された間隔がminimumUpdateInterval() よりも短い場合、代わりに最小間隔が使用されます。

更新間隔の変更は実用的な限りすぐに行われますが、変更にかかる時間は実装によって異なる場合があります。前のインターバルからの経過時間を新しいインターバルの一部としてカウントするかどうかも実装に依存する。

このプロパティのデフォルト値は 0 です。

注: サブクラスの実装は、updateInterval() が正しい値を返すように、setUpdateInterval() のベース実装を呼び出す必要があります。

:iOSとmacOSのAPIにはそのような機能がないため、このプロパティを使用して更新頻度を調整することはできません。これらのシステムでは、このパラメータはUpdateTimeoutError を設定し、希望する間隔内に更新が受信されなかった場合にerrorOccurred シグナルをトリガーするためにのみ使用される。

メンバー関数ドキュメント

[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)

指定されたparent でポジションソースを作成します。

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

ポジションソースを破壊する。

[static] QStringList QGeoPositionInfoSource::availableSources()

利用可能なソースプラグインのリストを返します。これには、現在のプラットフォーム用のデフォルトのバックエンドプラグインも含まれます。

[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const

name というバックエンド固有のプロパティの値を返します。そうでない場合は、返される値は無効です。サポートされているバックエンド固有のプロパティの一覧と説明は、Qt Positioning plugins#Default plugins にあります。

この関数は Qt 5.14 で導入されました。

setBackendPropertyも参照してください

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)

システムのデフォルトの位置データソース、または利用可能な優先順位が最も高いプラグインから読み込む、与えられたparent を持つ位置ソースを作成し、返します。

システムにデフォルトの位置ソースがない場合、有効なプラグインが見つからない場合、またはユーザーが現在の位置にアクセスする権限を持っていない場合は、nullptr を返します。

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

システムのデフォルトの位置データソース、または利用可能な優先順位が最も高いプラグインから読み込む、与えられたparent を持つ位置ソースを作成し、返します。

システムに既定の位置ソースがない場合、有効なプラグインが見つからない場合、またはユーザーが現在の位置にアクセスする権限を持っていない場合は、nullptr を返します。

このメソッドは、parameters をファクトリーに渡し、ソースを設定します。

この関数は Qt 5.14 で導入されました。

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)

sourceName という名前のプラグインをロードすることによって、与えられたparent を持つポジションソースを作成し、返します。

プラグインが見つからない場合はnullptr を返します。

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

sourceName という名前のプラグインをロードすることによって、与えられたparent を持つポジションソースを作成し、返します。

プラグインが見つからない場合はnullptr を返します。

このメソッドは、parameters をファクトリーに渡し、ソースを構成します。

この関数は Qt 5.14 で導入されました。

[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const

最後に発生したエラーの種類を返します。

注意: Qt6 以降、startUpdates() またはrequestUpdate() を呼び出すと、最後に発生したエラーは常にリセットされます。

[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)

このシグナルはエラーが発生した後に発せられる。positioningError パラメーターには、発生したエラーのタイプが記述される。

[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

最後の既知の位置を含む更新情報を返します。

fromSatellitePositioningMethodsOnly が true の場合は、衛星測位メソッドから受信した最後の既知の位置を返します。

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

startUpdates ()またはrequestUpdate ()が呼び出されると、更新が利用可能になったときにこのシグナルが発せられる。

update の値には、新しい更新の値が格納される。

[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)

現在位置を取得し、その情報とともにpositionUpdated() を発信しようとする。与えられたtimeout (ミリ秒単位)以内に現在位置が見つからない場合、またはtimeoutminimumUpdateInterval()によって返された値より小さい場合、UpdateTimeoutError を持つerrorOccurred() シグナルが発信される。

タイムアウトがゼロの場合、タイムアウトのデフォルトは、ソースに適した妥当なタイムアウト時間になります。

別の更新要求が進行中の場合、これは何もしない。ただし、startUpdates ()がすでに呼び出され、通常の更新が進行中であっても呼び出すことができます。

ソースが複数の測位方法を使用している場合、指定されたタイムアウト時間内に最も正確な測位方法から現在位置を取得しようとします。

注意: Qt6 以降、このメソッドは、位置を要求する前に、常に最後のエラーをNoError にリセットします。

注意: Android サービスからこのメソッドを使用する方法については、Android のQt Positioning を参照してください。

[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)

name というバックエンド固有のプロパティをvalue に設定します。成功した場合はtrue を返し、そうでない場合はfalse を返す。バ ッ ク エ ン ド 固有のプ ロ パテ ィ を使用す る と 、 位置決めサブシ ス テ ムの動作を実行時に設定す る こ と がで き ます。サポートされているバックエンド固有のプロパティは、Qt Positioning plugins#Default plugins にリストされ、説明されています。

この関数は Qt 5.14 で導入されました。

backendPropertyも参照してください

[pure virtual slot] void QGeoPositionInfoSource::startUpdates()

setUpdateInterval() で指定された間隔で更新の発信を開始する。

setUpdateInterval() が呼び出されていない場合、ソースは、更新が利用可能になり次第、更新を発行します。

このQGeoPositionInfoSource サブクラスが定期的な更新を提供できないと判断した場合は、UpdateTimeoutErrorerrorOccurred() シグナルが発行されます。これは、衛星の修正が失われた場合や、ハードウェア・エラーが検出された場合に発生する可能性があります。後でデータが利用可能になれば、位置の更新は再開される。定期的な更新が再開されるまで、UpdateTimeoutError のエラーは再発行されません。

注意: Qt6 以降、このメソッドは更新を開始する前に常に最後のエラーをNoError にリセットします。

注意 : Android サービスからこのメソッドを使用する方法については、Android のQt Positioning を参照してください。

iOSでは、バージョン8から、Core Locationフレームワークは、アプリケーションのInfo.plistに、NSLocationAlwaysUsageDescriptionまたはNSLocationWhenInUseUsageDescriptionというキーと、認証プロンプトに表示する文字列を持つ追加のエントリを必要とします。NSLocationWhenInUseUsageDescriptionキーは、アプリがフォアグラウンドにあるときに位置情報サービスの使用許可を要求するときに使用されます。NSLocationAlwaysUsageDescription は、アプリが実行中(フォアグラウンドとバックグラウンドの両方)であればいつでも位置情報サービスの使用許可を要求するときに使用される。両方のエントリが定義されている場合、NSLocationWhenInUseUsageDescription はフォアグラウンドモードの方が優先される。

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

定期的な更新を停止する。

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

このソースで使用可能なポジショニング・メソッドを返します。利用可能とは、この関数を呼び出した時点で使用可能であると定義されます。したがって、位置情報サービスのオフや衛星ベースの位置情報プロバイダーの制限などのユーザー設定は、この関数に反映されます。ステータスが変更されたときのランタイム通知は、supportedPositioningMethodsChanged ()を介して取得できます。

すべてのプラットフォームが異なる測位方法を区別したり、デバイスの現在のユーザー設定を伝達するわけではありません。以下の表は、現在のプラットフォーム状況の概要を示しています:

プラットフォーム概要
アンドロイド位置情報サービスがアクティブな場合、個々のプロバイダのステータスと一般的な位置情報サービ スのステータスが把握され、通信される。
GeoClue常にAllPositioningMethods を返すようにハードコーディングされています。
GeoClue2個々のプロバイダは区別できないが、無効な位置情報サービスは反映される。
iOS常にAllPositioningMethods を返すようにハードロックされています。
macOS常にAllPositioningMethods を返すようにハードロックされています。
Windows (UWP)個々のプロバイダーは区別できないが、無効化された位置情報サービスが反映される。

supportedPositioningMethodsChanged() およびsetPreferredPositioningMethods()も参照

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

この信号は、サポートされている測位方法が変更されたときに発信される。変更の原因としては、ユーザーが測位サービスのオン/オフを切り替えたり、測位サービスを特定のタイプ(GPSのみなど)に制限したりしたことが考えられます。対応する測位方法の変更は、すべてのプラットフォームで検出できるわけではないことに注意してください。supportedPositioningMethods() は現在のプラットフォームサポートの概要を提供します。

この関数は Qt 5.12 で導入されました。

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