QGeoPositionInfoSource Class
QGeoPositionInfoSource クラスは、位置情報の更新を配信するための抽象基底クラスです。詳細...
| ヘッダー: | #include <QGeoPositionInfoSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake: | QT += positioning |
| 継承元: | QObject |
| 継承元: |
パブリック型
| enum | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
| enum | PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods } |
| flags | PositioningMethods |
プロパティ
- minimumUpdateInterval : int
- preferredPositioningMethods : PositioningMethods
- sourceName : QString
- updateInterval : int
パブリック関数
| 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 ¶meters, QObject *parent) |
| QGeoPositionInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, 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);以前に設定された更新間隔を解除するには、setUpdateInterval() を値 0 で呼び出します。
注: 位置情報ソースによっては 、minimumUpdateInterval() によって返される更新間隔に最小値の要件が設けられている場合があります。
注: Android サービスからこのクラスを使用するには 、「Qt Positioning (Android)」を参照してください。
メンバ型のドキュメント
enum QGeoPositionInfoSource::Error
Error列挙型は、発生し得るエラーを表します。
| 定数 | 値 | 説明 |
|---|---|---|
QGeoPositionInfoSource::AccessError | 0 | アプリケーションに必要な権限が不足していたため、リモート位置情報バックエンドへの接続の確立に失敗しました。 |
QGeoPositionInfoSource::ClosedError | 1 | リモート位置情報バックエンドが接続を閉じました。これは、たとえばユーザーが位置情報サービスをオフにした場合などに発生します。位置情報サービスが再度有効になると、通常の更新が再開されます。 |
QGeoPositionInfoSource::NoError | 3 | エラーは発生していません。 |
QGeoPositionInfoSource::UnknownSourceError | 2 | 未特定のエラーが発生しました。 |
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) | 4 | requestUpdate() が呼び出された場合、このエラーは、指定されたタイムアウト時間内に現在の位置情報を取得できなかったことを示しています。startUpdates() が呼び出された場合、このエラーは、このQGeoPositionInfoSource サブクラスが、それ以上の定期的な更新を提供できないと判断したことを示しています。後者の場合、定期的な更新が再開されるまで、このエラーは再度発生することはありません。 |
enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods
位置決め方法の種類を定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QGeoPositionInfoSource::NoPositioningMethods | 0x00000000 | いずれの位置測定方法も使用しない。 |
QGeoPositionInfoSource::SatellitePositioningMethods | 0x000000ff | GPS や GLONASS などの衛星を利用した測位方式。 |
QGeoPositionInfoSource::NonSatellitePositioningMethods | 0xffffff00 | 3GPPセル識別子やWi-Fiを利用した測位など、その他の測位方法。 |
QGeoPositionInfoSource::AllPositioningMethods | 0xffffffff | 利用可能になり次第、衛星を利用した位置測定手法。それ以外の場合は、衛星を利用しない手法。 |
PositioningMethods 型は、QFlags<PositioningMethod> の typedef です。PositioningMethod 値の論理和(OR)の組み合わせを格納します。
プロパティのドキュメント
[read-only] minimumUpdateInterval : int
このプロパティは、位置情報の更新を取得するのに必要な最小時間(ミリ秒単位)を保持します。
これは、setUpdateInterval() およびrequestUpdate() が受け付ける最小値です。
アクセス関数:
| virtual int | minimumUpdateInterval() const = 0 |
[bindable] preferredPositioningMethods : PositioningMethods
注:この プロパティは、QProperty のバインディングに対応しています。
このソースの優先配置方法を設定します。
新しいメソッドの中に、ソースでサポートされていないメソッドが含まれている場合、そのサポートされていないメソッドは無視されます。
新しいメソッドの中に、ソースで利用可能またはサポートされているメソッドが 1 つも含まれていない場合、優先メソッドは、ソースで利用可能なメソッドのセットに設定されます。ソースで利用可能なメソッドがない場合(たとえば、位置情報サービスがオフになっている、または位置情報サービスを提供していない場合など)、渡されたメソッドはそのまま受け入れられます。
このプロパティのデフォルト値は `NoPositioningMethods` です。
注:サブクラスの 実装では、preferredPositioningMethods() が正しい値を返すようにするため、setPreferredPositioningMethods() の基底実装を呼び出す必要があります。
アクセス関数:
| QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
| virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
supportedPositioningMethods()も参照してください 。
[read-only] sourceName : QString
このプロパティには、使用中のポジションソース実装の一意の名前が格納されます。
これは、特定の位置情報ソース実装の新しいインスタンスを作成するために、createSource() に渡すことができる名前と同じものです。
アクセス関数:
| QString | sourceName() const |
[bindable] updateInterval : int
注:この プロパティは、QProperty バインディングに対応しています。
このプロパティには、各更新間の要求間隔(ミリ秒単位)が格納されます。
更新間隔が設定されていない場合(または 0 に設定されている場合)、ソースは必要に応じて更新を提供します。
更新間隔が設定されている場合、ソースは要求された間隔に可能な限り近い間隔で更新を提供します。要求された間隔が `minimumUpdateInterval()` よりも短い場合、代わりに最小間隔が使用されます。
更新間隔の変更は、実用的に可能な限り速やかに行われますが、変更に要する時間は実装によって異なる場合があります。前回の間隔からの経過時間が新しい間隔の一部としてカウントされるかどうかも、実装によって異なります。
このプロパティのデフォルト値は 0 です。
注: updateInterval() が正しい値を返すように、サブクラスの 実装ではsetUpdateInterval() の基底実装を呼び出す必要があります。
注: iOS および macOS では、API がそのような機能を提供していないため、この プロパティを使用して更新頻度を調整することはできません。これらのシステムでは、このパラメータはUpdateTimeoutError を設定し、指定された間隔内に更新が受信されなかった場合にerrorOccurred シグナルをトリガーするためにのみ使用されます。
アクセス関数:
| int | updateInterval() const |
| virtual void | setUpdateInterval(int msec) |
メンバ関数のドキュメント
[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 ¶meters, 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 ¶meters, 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
最後に確認された位置情報を含む更新情報を返します。情報が利用できない場合は、nullの更新情報を返します。
fromSatellitePositioningMethodsOnly がtrueの場合、衛星測位方式から受信した最新の既知位置を返します。利用可能な位置がない場合は、nullの更新情報を返します。
[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
startUpdates() またはrequestUpdate() が呼び出された場合、更新情報が利用可能になると、このシグナルが発信されます。
update の値には、新しい更新情報の値が格納されます。
[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)
現在の位置を取得し、その情報に基づいてpositionUpdated()を発信しようとします。指定されたtimeout (ミリ秒単位)の範囲内で現在の位置が見つからない場合、またはtimeout がminimumUpdateInterval()によって返される値よりも小さい場合、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 のサブクラスが定期的な更新を提供できないと判断した場合、UpdateTimeoutError を持つerrorOccurred() シグナルが発行されます。これは、衛星からの測位情報が失われた場合や、ハードウェアエラーが検出された場合に発生する可能性があります。後でデータが利用可能になれば、位置情報の更新は再開されます。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() を通じて取得できます。
すべてのプラットフォームが、異なる位置情報取得方法を区別したり、デバイスの現在のユーザー設定を通報したりするわけではありません。以下の表は、現在のプラットフォームの状況の概要を示しています:
| プラットフォーム | 概要 |
|---|---|
| Android | 位置情報サービスが有効な場合、個々のプロバイダのステータスおよび位置情報サービス全体の状態が把握・通知されます。 |
| GeoClue | 常に `AllPositioningMethods` を返すようハードコーディングされています。 |
| GeoClue2個々のプロバイダの区別はできませんが、無効化された位置情報サービスは反映されます。 | 個々のプロバイダーを区別することはできませんが、無効化された位置情報サービスの状態は反映されます。 |
| GeoClue常に `xml-ph-0000@deepl.internal` を返すようにハードコーディングされています。GeoClue2個 | 常にAllPositioningMethods を返すようにハードコーディングされています。 |
| macOS常に xml-ph-0000@deepl.internal を返すようにハードコーディングされています。 | 常に `AllPositioningMethods` を返すようにハードコーディングされています。 |
| Windows (UWP) | 個々のプロバイダーを区別することはできませんが、無効化された位置情報サービスが反映されます。 |
supportedPositioningMethodsChanged() およびsetPreferredPositioningMethods()も参照してください 。
[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()
このシグナルは、サポートされている位置情報取得方法が変更されたときに発火します。変更の原因としては、ユーザーが位置情報サービスのオン/オフを切り替えたり、位置情報サービスを特定のタイプ(例:GPSのみ)に制限したりすることが考えられます。なお、サポートされている位置情報取得方法の変更は、すべてのプラットフォームで検出できるわけではないことに注意してください。supportedPositioningMethods() は、現在のプラットフォームのサポート状況の概要を提供します。
この関数は Qt 5.12 で導入されました。
© 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.