QGeoRoutingManager Class
QGeoRoutingManager クラスは、地理的なルーティング操作のサポートを提供します。詳細...
Header: | #include <QGeoRoutingManager> |
qmake: | QT += location |
Inherits: | QObject |
パブリック関数
virtual | ~QGeoRoutingManager() |
QGeoRouteReply * | calculateRoute(const QGeoRouteRequest &request) |
QLocale | locale() const |
QString | managerName() const |
int | managerVersion() const |
QLocale::MeasurementSystem | measurementSystem() const |
void | setLocale(const QLocale &locale) |
void | setMeasurementSystem(QLocale::MeasurementSystem system) |
QGeoRouteRequest::FeatureTypes | supportedFeatureTypes() const |
QGeoRouteRequest::FeatureWeights | supportedFeatureWeights() const |
QGeoRouteRequest::ManeuverDetails | supportedManeuverDetails() const |
QGeoRouteRequest::RouteOptimizations | supportedRouteOptimizations() const |
QGeoRouteRequest::SegmentDetails | supportedSegmentDetails() const |
QGeoRouteRequest::TravelModes | supportedTravelModes() const |
QGeoRouteReply * | updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) |
シグナル
void | errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString()) |
void | finished(QGeoRouteReply *reply) |
詳細説明
calculateRoute() とupdateRoute() メソッドは、これらの操作を管理し、操作の結果と発生した可能性のあるエラーを報告するQGeoRouteReply オブジェクトを関数化します。
calculateRoute() 関数は、ウェイポイントのセットに従い、他のさまざまな条件に一致するルート(または複数 のルート)を見つけるために使用されます。QGeoRouteRequest クラスは、この情報を指定するために使用されます。
supportsRouteUpdates()がtrueを返す場合、QGeoRoutingManagerは位置の更新に基づくルート情報の更新をサポートしています。これにより、移動時間と距離の見積もりが更新され、すでに通過した QGeoRouteSegment はルートから削除されます。
この更新は、updateRoute() 関数でトリガーすることができる。この関数は、QGeoPositionInfoSource によって位置の更新として発行されたQGeoPositionInfo インスタンスを利用する。
QGeoRoutingManager のインスタンスにはQGeoServiceProvider::routingManager() でアクセスできます。
QGeoRoutingManager と QGeoRouteRequests の小さな使用例を以下に示す:
class RouteHandler : public QObject { Q_OBJECT public: RouteHandler(QGeoRoutingManager *routingManager, const QGeoCoordinate &origin, const QGeoCoordinate &destination) { QGeoRouteRequest request(origin, destination); // The request defaults to the fastest route by car, which is // equivalent to: // request.setTravelMode(QGeoRouteRequest::CarTravel); // request.setRouteOptimization(QGeoRouteRequest::FastestRoute); request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidTolls); request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidMotorPoolLanes); QGeoRouteRequest::AvoidFeaturesTypes avoidableFeatures = routingManager->supportedAvoidFeatureTypes(); if (!(avoidableFeatures & request.avoidFeatureTypes())) { // ... inform the user that the routing manager does not // provide support for avoiding tolls and/or motor pool lanes ... return; } QGeoRouteReply *reply = routingManager->calculateRoute(request); if (reply->isFinished()) { if (reply->error() == QGeoRouteReply::NoError) { routeCalculated(reply); } else { routeError(reply, reply->error(), reply->errorString()); } return; } connect(routingManager, &QGeoRoutingManager::finished, this, &RouteHandler::routeCalculated); connect(routingManager, &QGeoRoutingManager::errorOccurred, this, &RouteHandler::routeError); } private slots: void routeCalculated(QGeoRouteReply *reply) { // A route request can ask for several alternative routes ... if (reply->routes().size() != 0) { // ... but by default it will only get a single route QGeoRoute route = reply->routes().at(0); //... now we have to make use of the route ... } reply->deleteLater(); } void routeError(QGeoRouteReply *reply, QGeoRouteReply:Error error, const QString &errorString) { // ... inform the user that an error has occurred ... reply->deleteLater(); } };
メンバー関数 ドキュメント
[virtual noexcept]
QGeoRoutingManager::~QGeoRoutingManager()
このマネージャーを破棄する。
QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)
request で指定されたルートの計算を開始する。
QGeoRouteReply オブジェクトが返されます。このオブジェクトは、ルーティング操作を管理し、操作の結果を返すために使用できます。
このマネージャと返されたQGeoRouteReply オブジェクトは、操作が完了した場合やエラーが発生した場合を示すシグナルを発する。
操作が完了すると、QGeoRouteReply::routes を使って、計算されたルートを取得することができます。
このマネージャのメソッドによって報告されるように、request にこのマネージャがサポートしていない機能が含まれている場合、QGeoRouteReply::UnsupportedOptionError が発生します。
返されたリプライオブジェクトを削除するのはユーザの責任であるが、これはQGeoRoutingManager::finished()、QGeoRoutingManager::errorOccurred()、QGeoRouteReply::finished()、QGeoRouteReply::errorOccurred() に接続されたスロットで、deleteLater() を使用して行うことができる。
[signal]
void QGeoRoutingManager::errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())
このシグナルは、reply の処理でエラーが検出されたときに発せられる。QGeoRoutingManager::finished() シグナルは、おそらくその後に続く。
エラーは、エラー・コードerror で示される。errorString が空でない場合、エラーのテキスト記述が含まれる。
このシグナルとQGeoRouteReply::errorOccurred() は同時に発せられる。
注意: このシグナルに接続されたスロット内のreply オブジェクトを削除しないでください。代わりにdeleteLater() を使用してください。
[signal]
void QGeoRoutingManager::finished(QGeoRouteReply *reply)
このシグナルは、reply の処理が終了したときに発せられます。
reply::error() がQGeoRouteReply::NoError に等しい場合、処理は正常に終了しています。
このシグナルとQGeoRouteReply::finished() は同時に発せられます。
注意: このシグナルに接続されているスロットのreply オブジェクトを削除しないでください。代わりにdeleteLater() を使用してください。
QLocale QGeoRoutingManager::locale() const
このルーティング・マネージャが、アドレスや命令にどの言語を使用するかのヒントに使用するロケールを返します。
setLocale()も参照してください 。
QString QGeoRoutingManager::managerName() const
このルーティングマネージャの振る舞いを実装するエンジンの名前を返します。
managerName() とmanagerVersion() の組み合わせは、プラグインの実装の中で一意でなければなりません。
int QGeoRoutingManager::managerVersion() const
このルーティングマネージャの振る舞いを実装しているエンジンのバージョンを返します。
managerName() と managerVersion() の組み合わせは、プラグイン実装間で一意でなければなりません。
QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const
このマネージャが使用する測定システムを返します。
setMeasurementSystem() が呼び出された場合、この関数によって返される値は、locale().measurementSystem() によって返される値とは異なる可能性がある。この場合、この関数が返す値が、マネージャが使用する値となる。
setMeasurementSystem() およびsetLocale()も参照 。
void QGeoRoutingManager::setLocale(const QLocale &locale)
このマネージャが使用するロケールをlocale に設定します。
このルーティングマネージャが異なる言語でのアドレスや命令を返すことをサポートしている場合、それらはlocale の言語で返されます。
これが設定されていない場合、使用されるロケールのデフォルトはシステムロケールです。
locale()も参照 。
void QGeoRoutingManager::setMeasurementSystem(QLocale::MeasurementSystem system)
このマネージャが使用する測定システムをsystem に設定します。
測定システムは、ロケールとは無関係に設定できます。setLocale() とこの関数の両方が測定システムを設定します。最後に呼び出された関数によって設定された値が使用されます。
measurementSystem()、locale()、setLocale()も参照 。
QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const
このマネージャーがルート計画中に考慮できる特徴の種類を返します。
QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const
このマネージャがルート計画中に異なる特徴に適用できる重み付けを返します。
QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const
このマネージャが要求できるナビゲーション操作の詳細レベルを返します。
QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const
このマネージャーがサポートするルート最適化を返します。
QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const
このマネージャーでリクエストできるルート区間の詳細レベルを返します。
QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const
このマネージャがサポートする移動モードを返します。
QGeoRouteReply *QGeoRoutingManager::updateRoute(const QGeoRoute &route, const QGeoCoordinate &position)
現在の位置position に基づいてroute を更新する処理を開始する。
QGeoRouteReply オブジェクトが返される。このオブジェクトは、ルーティング操作を管理し、操作の結果を返すために使用できる。
このマネージャと返されたQGeoRouteReply オブジェクトは、操作が完了した場合やエラーが発生した場合を示すシグナルを発する。
supportsRouteUpdates()がfalseを返すと、QGeoRouteReply::UnsupportedOptionError 。
操作が完了すると、QGeoRouteReply::routes 、更新されたルートを取得することができます。
返されるルートは、特にposition が最初のルートから遠く離れている場合、元のルートとはまったく異なる可能性があります。そうでなければ、ルートは似ていますが、残りの時間と距離は更新され、元のルートの通過したセグメントは削除されます。
返されたリプライ・オブジェクトを削除するのはユーザーの責任ですが、これはQGeoRoutingManager::finished(),QGeoRoutingManager::errorOccurred(),QGeoRouteReply::finished(),QGeoRouteReply::errorOccurred() とdeleteLater() に接続されたスロットで行うことができます。
ここに含まれる文書の著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。