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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。