Sur cette page

QGeoRoutingManager Class

La classe QGeoRoutingManager prend en charge les opérations de routage géographique. En savoir plus…

Header: #include <QGeoRoutingManager>
qmake: QT += location
Inherits: QObject

Fonctions publiques

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)

Signaux

void errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())
void finished(QGeoRouteReply *reply)

Description détaillée

Les méthodes ` calculateRoute()` et ` updateRoute()` agissent sur des objets ` QGeoRouteReply `, qui gèrent ces opérations et renvoient le résultat de celles-ci ainsi que les éventuelles erreurs survenues.

La fonction ` calculateRoute()` permet de trouver un itinéraire (ou plusieurs) qui suit un ensemble de points de passage et répond à divers autres critères. La classe ` QGeoRouteRequest ` sert à spécifier ces informations.

Si supportsRouteUpdates() renvoie true, cela signifie que QGeoRoutingManager prend en charge la mise à jour des informations d’itinéraire en fonction des mises à jour de position. Cela entraîne la mise à jour des estimations de temps de trajet et de distance, ainsi que la suppression de l’itinéraire de tous les QGeoRouteSegments déjà parcourus.

Les mises à jour peuvent être déclenchées à l’aide de la fonction ` updateRoute()`, qui utilise les instances ` QGeoPositionInfo ` émises en tant que mises à jour de position par ` QGeoPositionInfoSource`.

On peut accéder aux instances de `QGeoRoutingManager` via ` QGeoServiceProvider::routingManager()`.

Voici un petit exemple d'utilisation de QGeoRoutingManager et de 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();
    }
};

Documentation des fonctions membres

[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()

Supprime ce gestionnaire.

QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)

Lance le calcul de l'itinéraire spécifié par request.

Un objet ` QGeoRouteReply ` sera renvoyé ; celui-ci peut être utilisé pour gérer l'opération de calcul d'itinéraire et pour renvoyer les résultats de l'opération.

Ce gestionnaire et l'objet ` QGeoRouteReply ` renvoyé émettront des signaux indiquant si l'opération s'est achevée ou si des erreurs se sont produites.

Une fois l’opération terminée, QGeoRouteReply::routes peut être utilisé pour récupérer l’itinéraire ou les itinéraires calculés.

Si « request » inclut des fonctionnalités qui ne sont pas prises en charge par ce gestionnaire, comme indiqué par les méthodes de ce dernier, une exception « QGeoRouteReply::UnsupportedOptionError » sera levée.

Il incombe à l’utilisateur de supprimer l’objet de réponse renvoyé, bien que cela puisse être effectué dans le slot associé à QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() ou QGeoRouteReply::errorOccurred() à l’aide de deleteLater().

[signal] void QGeoRoutingManager::errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())

Ce signal est émis lorsqu'une erreur a été détectée lors du traitement de reply. Le signal QGeoRoutingManager::finished() suivra probablement.

L'erreur sera décrite par le code d'erreur error. Si errorString n'est pas vide, il contiendra une description textuelle de l'erreur.

Ce signal et QGeoRouteReply::errorOccurred() seront émis simultanément.

Remarque : ne supprimezpas l’objet reply dans le slot connecté à ce signal. Utilisez plutôt la fonction deleteLater().

[signal] void QGeoRoutingManager::finished(QGeoRouteReply *reply)

Ce signal est émis lorsque le traitement de ` reply ` est terminé.

Si reply::error() est égal à QGeoRouteReply::NoError, cela signifie que le traitement s'est terminé avec succès.

Ce signal et la fonction QGeoRouteReply::finished() seront émis simultanément.

Remarque : ne supprimezpas l’objet ` reply ` dans le slot connecté à ce signal. Utilisez plutôt ` deleteLater()`.

QLocale QGeoRoutingManager::locale() const

Renvoie les paramètres régionaux utilisés pour indiquer à ce gestionnaire de routage quelle langue utiliser pour les adresses et les instructions.

Voir également setLocale().

QString QGeoRoutingManager::managerName() const

Renvoie le nom du moteur qui implémente le comportement de ce gestionnaire de routage.

La combinaison de `managerName()` et ` managerVersion()` doit être unique parmi toutes les implémentations du plugin.

int QGeoRoutingManager::managerVersion() const

Renvoie la version du moteur qui implémente le comportement de ce gestionnaire de routines.

La combinaison de ` managerName()` et `managerVersion()` doit être unique parmi les implémentations du plugin.

QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const

Renvoie le système de mesure utilisé par ce gestionnaire.

Si la fonction setMeasurementSystem() a été appelée, la valeur renvoyée par cette fonction peut être différente de celle renvoyée par locale() oumeasurementSystem(). Dans ce cas, la valeur renvoyée par cette fonction est celle qui sera utilisée par le gestionnaire.

Voir également setMeasurementSystem() et setLocale().

void QGeoRoutingManager::setLocale(const QLocale &locale)

Définit les paramètres régionaux à utiliser par ce gestionnaire sur locale.

Si ce gestionnaire de routage prend en charge le renvoi d’adresses et d’instructions dans différentes langues, celles-ci seront renvoyées dans la langue de locale.

Si aucune locale n’est définie, la locale par défaut du système est utilisée.

Voir également locale().

void QGeoRoutingManager::setMeasurementSystem(QLocale::MeasurementSystem system)

Définit le système de mesure utilisé par ce gestionnaire sur « system ».

Le système de mesure peut être défini indépendamment des paramètres régionaux. La fonction ` setLocale()` et cette fonction permettent toutes deux de définir le système de mesure. C’est la valeur définie par la dernière fonction appelée qui sera utilisée.

Voir également measurementSystem(), locale() et setLocale().

QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const

Renvoie les types d'éléments que ce gestionnaire peut prendre en compte lors de la planification d'itinéraires.

QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const

Renvoie les pondérations que ce responsable peut appliquer aux différents critères lors de la planification d'itinéraires.

QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const

Renvoie les niveaux de détail des manœuvres de navigation pouvant être demandés par ce gestionnaire.

QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const

Renvoie les optimisations d'itinéraire prises en charge par ce gestionnaire.

QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const

Renvoie les niveaux de détail des segments de routage pouvant être demandés via ce gestionnaire.

QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const

Renvoie les modes de déplacement pris en charge par ce gestionnaire.

QGeoRouteReply *QGeoRoutingManager::updateRoute(const QGeoRoute &route, const QGeoCoordinate &position)

Lance le processus de mise à jour de l'objet ` route ` en fonction de la position actuelle ` position`.

Un objet ` QGeoRouteReply ` sera renvoyé ; celui-ci pourra être utilisé pour gérer l'opération de routage et pour renvoyer les résultats de l'opération.

Ce gestionnaire et l’objet ` QGeoRouteReply ` renvoyé émettront des signaux indiquant si l’opération s’est achevée ou si des erreurs se sont produites.

Si supportsRouteUpdates() renvoie « false », un événement QGeoRouteReply::UnsupportedOptionError se produira.

Une fois l’opération terminée, l’ QGeoRouteReply::routes peut être utilisé pour récupérer l’itinéraire mis à jour.

L’itinéraire renvoyé peut être totalement différent de l’itinéraire d’origine, en particulier si ` position ` est très éloigné de l’itinéraire initial. Dans le cas contraire, l’itinéraire sera similaire, bien que le temps restant et la distance soient mis à jour et que tous les segments de l’itinéraire d’origine qui ont déjà été parcourus soient supprimés.

Il incombe à l’utilisateur de supprimer l’objet de réponse renvoyé, bien que cela puisse être effectué dans le slot associé à QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() ou QGeoRouteReply::errorOccurred() à l’aide de 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.