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 |
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 に設定します。初期化されていないPositionSource で呼び出された場合を含め、成功すると true を返し、失敗すると false を返します。サポートされているバックエンド固有のプロパティの一覧と説明は、Qt Positioning plugins#Defaultプラグインにあります。
このメソッドは Qt Positioning 5.14 で導入されました。
backendProperty とQGeoPositionInfoSource::setBackendPropertyも参照してください 。
start() |
位置情報ソースからの更新を要求します。設定されていればupdateInterval を使用し、そうでなければデフォルトの間隔を使用します。利用可能なソースがない場合、このメソッドは何の効果もありません。
注釈 このメソッドを呼び出すと、active プロパティのバインディングが解除されます。
stop() |
update(int timeout) |
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。