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 シグナルハンドラの実装を提供することで、位置の更新を取得できます。

使用例

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

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 Bindable Propertiesも参照してください

プロパティの説明

active : bool

このプロパティは、位置ソースがアクティブであるかどうかを示します。このプロパティを false に設定するとstop が呼び出され、true に設定するとstart が呼び出されます。

start,stop,updateも参照してください


name : string

このプロパティは、現在位置情報を提供しているプラグインの一意の内部名を保持する。

このプロパティを設定すると、PositionSource が特定の位置情報プロバイダを使用するようになります。name プロパティが変更された時点でPositionSource がアクティブであれば、それは非アクティブになる。指定されたポジショニング・プロバイダがロードできない場合、ポジション・ソースは無効になります。

name プロパティを変更すると、updateIntervalsupportedPositioningMethodspreferredPositioningMethods プロパティも変更される可能性があります。


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

このプロパティは、プラグイン・パラメータのリストを保持します。

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


position : Position

このプロパティは、最後の既知の位置データを保持します。このプロパティは読み取り専用です。

Position 型には、さまざまな位置メンバ変数があり、その有効性は適切な有効性関数でチェックできます(たとえば、更新が速度や高度のデータを持っていないことがあります)。

しかし、positionChanged シグナルを受信した場合は常に、少なくとも position::coordinate::latitude, position::coordinate::longitude, position::timestamp は有効であるとみなすことができる。

startstopupdateも参照


preferredPositioningMethods : enumeration

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

  • PositionSource.NoPositioningMethods - 優先される測位方法はありません。
  • PositionSource.SatellitePositioningMethods - GPS などの衛星ベースの測位方法を優先する。
  • PositionSource.NonSatellitePositioningMethods - 非衛星ベースの方法を優先する。
  • PositionSource.AllPositioningMethods - どの測位方法でもよい。

sourceError : enumeration

このプロパティは、PositionSource で最後に発生したエラーを保持します。

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

supportedPositioningMethods : enumeration

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

  • PositionSource.NoPositioningMethods - サポートされている測位方法がない(ソースがない)。
  • PositionSource.SatellitePositioningMethods - GPS などの衛星ベースの測位方法がサポートされています。
  • PositionSource.NonSatellitePositioningMethods - 非衛星ベースの方法がサポートされています。
  • PositionSource.AllPositioningMethods - 衛星ベースの測位方法と非衛星ベースの測位方法の両方がサポートされます。

updateInterval : int

このプロパティは、必要な更新間隔(ミリ秒)を保持します。

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


valid : bool

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

アプリケーションは、このプロパティをチェックして、ランタイム・プラットフォームで測位が利用可能かどうかを判断し、それに応じて対応する必要があります。


メソッドのドキュメント

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

name というバックエンド固有のプロパティが存在する場合、その値を返す。そうでない場合は、初期化されていないPositionSource で呼び出された場合も含めて、返り値は無効です。対応するバックエンド固有のプロパティの一覧と説明はQt Positioning plugins#Default plugins にあります。

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

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


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

name というバックエンド固有のプロパティをvalue に設定します。成功すれば true を返し、そうでなければ false を返します(初期化されていないPositionSource で呼び出された場合を含む)。サポートされているバックエンド固有のプロパティは、Qt Positioning plugins#Defaultプラグイン にリストアップされ、説明されています。

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

backendProperty およびQGeoPositionInfoSource::setBackendPropertyも参照


start()

ロケーションソースからの更新を要求する。設定されていればupdateInterval を使用し、そうでなければデフォルトの間隔を使用する。利用可能なソースがない場合、このメソッドは何の効果もありません。

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

stopupdate 、およびactiveも参照してください


stop()

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

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

startupdateactiveも参照のこと


update(int timeout)

ロケーション・ソースからの単一の更新を要求する便利なメソッド。利用可能なソースがない場合、このメソッドは何の効果もありません。

位置ソースがアクティブでない場合、更新を受信するのにかかる時間、または要求がタイムアウトするまで、その位置ソースはアクティブになります。要求タイムアウト期間はソース固有です。

timeout はミリ秒単位で指定する。timeout がゼロ (既定値) の場合、ソースに適した妥当なタイムアウト期間が既定値となります。

startstop 、および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.