このページでは

PositionSource QML Type

PositionSource 型は、デバイスの現在の位置情報を提供します。詳細...

Import Statement: import QtPositioning

プロパティ

方法

詳細説明

PositionSource型は、ユーザーデバイスの現在位置に関する情報を提供します。位置情報はPosition 型として利用可能であり、経度、緯度、速度、精度の詳細など、GPSやその他の類似システムから通常取得可能なすべての標準パラメータが含まれています。

プラットフォームやデバイスによって利用可能な位置情報ソースが異なるため、これらは基本タイプ(Satellite、NonSatellite、およびAllPositioningMethods)ごとに分類されます。現在のプラットフォームで利用可能な手法は、supportedPositioningMethods プロパティで列挙できます。

アプリケーションに適した位置情報取得方法を指定するには、preferredPositioningMethods プロパティを設定します。優先する方法が利用できない場合、そのプラットフォームのデフォルトの位置情報ソースが代わりに選択されます。デフォルトのソースが利用できない場合(ランタイムプラットフォームにインストールされていない、または無効化されているため)、valid プロパティはfalseに設定されます。

updateInterval プロパティを使用すると、アプリケーションが位置情報の更新を受け取る頻度を指定できます。start()、stop()、update()の各メソッドを使用してPositionSourceの動作を制御できるほか、active プロパティを設定することで、start()またはstop()を呼び出すのと同じ効果を得ることができます。

PositionSourceがアクティブな場合、位置情報の更新は、バインディング内でposition プロパティを単純に利用する方法(別の項目のプロパティの値として)か、onPositionChanged シグナルハンドラの実装を指定する方法のいずれかで取得できます。

使用例

次の例は、1 秒ごとに更新情報を受け取り、経度と緯度をコンソールに出力するために使用される、単純な PositionSource を示しています。

PositionSource {
    id: src
    updateInterval: 1000
    active: true

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

動作状態の制御

前述の通り、PositionSource には動作状態を制御する 2 つの方法があります。

注: これらのアプローチを混在させないことが非常に重要です 。バインド可能なactive プロパティを使用してPositionSourceオブジェクトを制御しているにもかかわらず、後でコードの別の部分からstart()やstop()が呼び出されると、バインドが破綻します。その結果、例えば、UI要素が基になるオブジェクトに一切接続されなくなるといった事態が発生する可能性があります。

以下の不適切なコード例を考えてみましょう。ここでは、active プロパティがCheckBoxの状態にバインドされていますが、onClicked シグナルハンドラ内でstop()を呼び出すことで、そのバインドが解除されてしまいます。

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()
            }
        }
    }
}

「Stop」ボタンがクリックされると、stop() が実行され、active プロパティのバインディングが解除されます。この時点で、CheckBox UI 要素は PositionSource オブジェクトを制御しなくなります。

この場合の簡単な修正方法は、onClicked ハンドラからCheckBoxの状態を更新することです。CheckBoxのチェックが外れるとすぐに、active プロパティに通知が行われ、PositionSourceオブジェクトの状態がそれに応じて更新されます。これにより、UIの状態も一貫性を保つことになります。

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

注: update() を使用して 単一の位置更新を要求しても、active プロパティのバインディングには何の影響も与えないため、これらを問題なく併用することができます。

関連項目: QtPositioning::Position 、QGeoPositionInfoSource 、PluginParameter 、およびQt のバインド可能なプロパティ。

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

active : bool

このプロパティは、位置情報のソースが有効かどうかを示します。このプロパティを false に設定すると、stop を呼び出したのと同じ効果があり、true に設定すると、start を呼び出したのと同じ効果があります。

start 、stop 、およびupdateも参照してください 。

name : string

このプロパティには、現在位置情報を提供しているプラグインの一意の内部名が格納されます。

このプロパティを設定すると、PositionSource は特定の位置情報プロバイダを使用するようになります。nameプロパティが変更された時点でPositionSource が有効になっている場合、そのプロバイダは非アクティブになります。指定された位置情報プロバイダを読み込めない場合、位置情報のソースは無効になります。

nameプロパティを変更すると、updateInterval 、supportedPositioningMethods 、およびpreferredPositioningMethods のプロパティも変更される場合があります。

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

このプロパティには、プラグインパラメータのリストが格納されます。

このプロパティは、QtPositioning 5.14 で導入されました。

position : Position

このプロパティには、最後に確認された位置情報が格納されています。これは読み取り専用のプロパティです。

Position 型にはさまざまな位置関連のメンバ変数があり、それらの有効性は適切な有効性関数を使用して確認できます(たとえば、更新データに速度や高度のデータが含まれていない場合があります)。

ただし、positionChanged 信号を受信した場合は、少なくともposition::coordinate::latitude、position::coordinate::longitude、およびposition::timestampは有効であるとみなすことができます。

start 、stop 、およびupdateも参照してください 。

preferredPositioningMethods : enumeration

このプロパティは、現在のソースの優先配置方法を保持します。

定数説明
PositionSource.NoPositioningMethods優先される測位方式はありません。
PositionSource.SatellitePositioningMethodsGPS などの衛星を利用した測位方式が優先されるべきです。
PositionSource.NonSatellitePositioningMethods衛星を利用しない測位方法を優先すべきです。
PositionSource.AllPositioningMethodsどのような測位方式でも構わない。

sourceError : enumeration

このプロパティには、PositionSource で最後に発生したエラーが格納されます。

定数説明
PositionSource.AccessErrorアプリケーションに必要な権限が不足していたため、リモート位置情報バックエンドへの接続の確立に失敗しました。
PositionSource.ClosedError位置情報バックエンドが接続を閉じました。これは、たとえばユーザーが位置情報サービスをオフにした場合などに発生します。位置情報サービスが再度有効になると、通常の更新が再開されます。
PositionSource.NoErrorエラーは発生していません。
PositionSource.UnknownSourceError未確認のエラーが発生しました。
PositionSource.UpdateTimeoutError指定されたタイムアウト内に現在の位置情報を取得できなかったか、このPositionSource が、これ以上の定期的な更新を提供できないと判断しました。

supportedPositioningMethods : enumeration

このプロパティは、現在のソースでサポートされている配置方法を保持します。

定数説明
PositionSource.NoPositioningMethodsサポートされている測位方式なし(ソースなし)。
PositionSource.SatellitePositioningMethodsGPS などの衛星を利用した測位方式がサポートされています。
PositionSource.NonSatellitePositioningMethods衛星を利用しない測位方式がサポートされています。
PositionSource.AllPositioningMethods衛星を利用した測位方式と衛星を利用しない測位方式の両方がサポートされています。

updateInterval : int

このプロパティは、更新間隔(ミリ秒単位)を指定します。

QGeoPositionInfoSource::updateInterval()も参照してください 。

valid : bool

このプロパティは、PositionSource オブジェクトがデータを提供するための有効なバックエンドプラグインを取得している場合にtrueになります。falseの場合、PositionSource の他のメソッドは効果を発揮しません。

アプリケーションは、このプロパティを確認して、実行環境上で位置指定が利用可能かつ有効になっているかどうかを判断し、それに応じて処理を行う必要があります。

メソッドのドキュメント

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

name という名前のバックエンド固有のプロパティが存在する場合、その値を返します。それ以外の場合(初期化されていない `PositionSource` に対して呼び出された場合も含む)、返される値は無効となります。サポートされているバックエンド固有のプロパティの一覧と説明は、Qt Positioning plugins#Default plugins に記載されています。

このメソッドは、Qt Positioning 5.14 で導入されました。

setBackendProperty およびQGeoPositionInfoSource::setBackendPropertyも参照してください 。

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

「name 」という名前のバックエンド固有のプロパティを「value 」に設定します。成功した場合は true を返し、それ以外の場合は false を返します。これには、初期化されていないPositionSource に対して呼び出された場合も含まれます。サポートされているバックエンド固有のプロパティの一覧と説明は、Qt Positioning plugins#Default plugins に記載されています。

このメソッドは、Qt Positioning 5.14 で導入されました。

backendProperty およびQGeoPositionInfoSource::setBackendPropertyも参照してください 。

void start()

位置情報ソースから更新情報を要求します。updateInterval が設定されている場合はそれを使用し、設定されていない場合はデフォルトの間隔を使用します。利用可能なソースがない場合、このメソッドは効果を発揮しません。

注: このメソッドを呼び出すと 、active プロパティのバインディングが解除されます。

関連項目: stop()、update()、およびactive 。

void stop()

ロケーションソースからの更新を停止します。利用可能なソースがない場合、またはソースがアクティブでない場合、このメソッドは効果を発揮しません。

注: このメソッドを呼び出すと 、active プロパティのバインディングが解除されます。

関連項目: start()、update()、およびactive 。

void update(int timeout)

ロケーションソースに対して単一の更新をリクエストするための便利なメソッドです。利用可能なソースがない場合、このメソッドは効果を発揮しません。

位置情報ソースが非アクティブの場合、更新を受信するまで、またはリクエストがタイムアウトするまで、そのソースがアクティブになります。リクエストのタイムアウト期間はソースごとに異なります。

timeout はミリ秒単位で指定されます。timeout がゼロ(デフォルト値)の場合、ソースに適した妥当なタイムアウト期間がデフォルトで設定されます。

start()、stop()、および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.