このページでは

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 は位置情報の更新に基づいてルート情報を更新することをサポートしています。これにより、所要時間と距離の推定値が更新され、すでに通過済みの QGeoRouteSegments はルートから削除されます。

更新は、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 が発生します。

返された reply オブジェクトの削除はユーザーの責任ですが、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() を使用してこれを行うことも可能です。

© 2026 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.