Spec-Zone.ru › Qt 5.15

Класс QGeoRoutingManager

Класс QGeoRoutingManager предоставляет поддержку географических операций маршрутизации. Подробнее...

Заголовок: #include <QGeoRoutingManager>
qmake: QT += location
С тех пор: Qt 5.6
Наследует: QObject

Этот класс был представлен в Qt 5.6.

  • Список всех членов, включая унаследованные

Открытые функции

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 error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString())
void finished(QGeoRouteReply *reply)

Подробное описание

Методы calculateRoute() и updateRoute() работают с объектами QGeoRouteReply, которые управляют этими операциями и сообщают о результатах операций и любых возникших ошибках.

Функция calculateRoute() используется для поиска маршрута (или маршрутов), который следует по заданным точкам маршрута и соответствует различным другим критериям. Для указания этой информации используется класс QGeoRouteRequest.

Если функция supportsRouteUpdates() возвращает true, то QGeoRoutingManager поддерживает обновление информации о маршруте на основе обновлений положения. Это приведет к обновлению оценок времени и расстояния и удалению любых уже пройденных QGeoRouteSegments из маршрута.

Обновления могут быть инициированы с помощью функции updateRoute(), которая использует экземпляры QGeoPositionInfo, выдаваемые в качестве обновлений положения источником QGeoPositionInfoSource.

Экземпляры QGeoRoutingManager доступны с помощью QGeoServiceProvider::routingManager().

Следующий небольшой пример демонстрирует использование QGeoRoutingManager и QGeoRouteRequests:

class MyRouteHandler : public QObject
{
    Q_OBJECT
public:
    MyRouteHandler(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,
                SIGNAL(finished(QGeoRouteReply*)),
                this,
                SLOT(routeCalculated(QGeoRouteReply*)));

        connect(routingManager,
                SIGNAL(error(QGeoRouteReply*,QGeoRouteReply::Error,QString)),
                this,
                SLOT(routeError(QGeoRouteReply*,QGeoRouteReply::Error,QString)));
    }

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();
    }
};

Документация по членам-функциям

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

Этот сигнал излучается, когда при обработке reply была обнаружена ошибка. Вероятно, последует сигнал QGeoRoutingManager::finished().

Ошибка будет описана с помощью кода ошибки error. Если errorString не пуста, она будет содержать текстовое описание ошибки.

Этот сигнал и QGeoRouteReply::error() будут излучаться одновременно.

Примечание: Не удаляйте объект reply в слоте, подключенном к этому сигналу. Используйте deleteLater() вместо этого.

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

Этот сигнал излучается, когда обработка reply завершена.

Если reply::error() равно QGeoRouteReply::NoError, то обработка завершилась успешно.

Этот сигнал и QGeoRouteReply::finished() будут излучаться одновременно.

Примечание: Не удаляйте объект reply в слоте, подключенном к этому сигналу. Используйте deleteLater() вместо этого.

[virtual] QGeoRoutingManager::~QGeoRoutingManager()

Уничтожает этот менеджер.

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

Начинает вычисление маршрута, заданного request.

Будет возвращен объект QGeoRouteReply, который может быть использован для управления операцией маршрутизации и возврата результатов операции.

Этот менеджер и возвращенный объект QGeoRouteReply будут излучать сигналы, указывающие, завершается ли операция или возникают ошибки.

После завершения операции с помощью QGeoRouteReply::routes можно получить вычисленный маршрут или маршруты.

Если request содержит функции, которые не поддерживаются этим менеджером (как сообщается методами в этом менеджере), произойдет ошибка QGeoRouteReply::UnsupportedOptionError.

Пользователь отвечает за удаление возвращенного объекта reply, хотя это можно сделать в слоте, подключенном к QGeoRoutingManager::finished(), QGeoRoutingManager::error(), QGeoRouteReply::finished() или QGeoRouteReply::error() с помощью 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(). В этом случае значение, возвращаемое этой функцией, будет использоваться менеджером.

См. также 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)

Начинает процесс обновления route на основе текущего положения position.

Возвращается объект QGeoRouteReply, который используется для управления операцией маршрутизации и возврата результатов.

Этот менеджер и возвращаемый объект QGeoRouteReply будут генерировать сигналы, указывающие, завершена ли операция или произошли ошибки.

Если supportsRouteUpdates() возвращает false, произойдет ошибка QGeoRouteReply::UnsupportedOptionError.

После завершения операции, QGeoRouteReply::routes можно использовать для получения обновлённого маршрута.

Возвращённый маршрут может существенно отличаться от исходного маршрута, особенно если position находится далеко от начального маршрута. В противном случае маршрут будет похож, но оставшееся время и расстояние будут обновлены, а любые участки исходного маршрута, которые были пройдены, будут удалены.

Пользователь отвечает за удаление возвращенного объекта reply, хотя это можно сделать в слоте, подключенном к QGeoRoutingManager::finished(), QGeoRoutingManager::error(), QGeoRouteReply::finished() или QGeoRouteReply::error() с помощью deleteLater().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qgeoroutingmanager.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API