PositionSource QML Type
PositionSource 型は、デバイスの現在位置を提供します。詳細...
Import Statement: | import QtPositioning |
プロパティ
- active : bool
- name : string
- parameters : list<PluginParameter>
(since QtPositioning 5.14)
- position : Position
- preferredPositioningMethods : enumeration
- sourceError : enumeration
- supportedPositioningMethods : enumeration
- updateInterval : int
- valid : bool
方法
- Variant backendProperty(string name)
(since Qt Positioning 5.14)
- bool setBackendProperty(string name, Variant value)
(since Qt Positioning 5.14)
- start()
- stop()
- update(int timeout)
詳細説明
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 } }
QtPositioning::Position,QGeoPositionInfoSource,PluginParameter,Qt Bindable Propertiesも参照してください 。
プロパティの説明
active : bool |
name : string |
このプロパティは、現在位置情報を提供しているプラグインの一意の内部名を保持する。
このプロパティを設定すると、PositionSource が特定の位置情報プロバイダを使用するようになります。name プロパティが変更された時点でPositionSource がアクティブであれば、それは非アクティブになる。指定されたポジショニング・プロバイダがロードできない場合、ポジション・ソースは無効になります。
name プロパティを変更すると、updateInterval 、supportedPositioningMethods 、preferredPositioningMethods プロパティも変更される可能性があります。
parameters : list<PluginParameter> |
このプロパティは、プラグイン・パラメータのリストを保持します。
このプロパティは QtPositioning 5.14 で導入されました。
position : Position |
このプロパティは、最後の既知の位置データを保持します。このプロパティは読み取り専用です。
Position 型には、さまざまな位置メンバ変数があり、その有効性は適切な有効性関数でチェックできます(たとえば、更新が速度や高度のデータを持っていないことがあります)。
しかし、positionChanged
シグナルを受信した場合は常に、少なくとも position::coordinate::latitude, position::coordinate::longitude, position::timestamp は有効であるとみなすことができる。
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 の他のメソッドは何の効果もありません。
アプリケーションは、このプロパティをチェックして、ランタイム・プラットフォームで測位が利用可能かどうかを判断し、それに応じて対応する必要があります。
メソッドのドキュメント
|
name というバックエンド固有のプロパティが存在する場合、その値を返す。そうでない場合は、初期化されていないPositionSource で呼び出された場合も含めて、返り値は無効です。対応するバックエンド固有のプロパティの一覧と説明はQt Positioning plugins#Default plugins にあります。
このメソッドはQt Positioning 5.14 で導入されました。
backendProperty およびQGeoPositionInfoSource::setBackendPropertyも参照してください 。
name というバックエンド固有のプロパティをvalue に設定します。成功すれば true を返し、そうでなければ false を返します(初期化されていないPositionSource で呼び出された場合を含む)。サポートされているバックエンド固有のプロパティは、Qt Positioning plugins#Defaultプラグイン にリストアップされ、説明されています。
このメソッドはQt Positioning 5.14 で導入されました。
backendProperty およびQGeoPositionInfoSource::setBackendPropertyも参照 。
start() |
ロケーションソースからの更新を要求する。設定されていればupdateInterval を使用し、そうでなければデフォルトの間隔を使用する。利用可能なソースがない場合、このメソッドは何の効果もありません。
注釈 このメソッドを呼び出すと、active プロパティのバインディングが解除されます。
stop() |
update(int timeout) |
© 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.