Документация
ОС Аврора 1.0.0

Класс MfwOfflineRoutingBase

Класс MfwOfflineRoutingBase позволяет реализовать функциональность автономной маршрутизации. Подробнее…

Подключение: #include <MfwOfflineRoutingBase>

Публичные типы

enum TravelMode
enum ValhallaAction

Свойства

Публичные функции

MfwOfflineRoutingBase(QObject *parent = nullptr)
~MfwOfflineRoutingBase()
virtual QVariantList decode(const std::string &encoded)
QString getOfflinePath() const
virtual MfwRoute * getRoute(ValhallaAction valhallaAction, bool shortest, qreal useTolls, qreal useHighways, TravelMode travelMode, QVariantList points, bool useOptimizations)
QString getTravelMode(TravelMode travelMode)
virtual QString getValhallaOptimizedRoute(ValhallaAction valhallaAction, QString reqJSON)
QJsonDocument prepareRequest(bool shortest, qreal useTolls, qreal useHighways, QString travelMode, QVariantList points, bool useOptimizations)
void setOfflinePath(QString offlinePath)
virtual MfwRoute * updateRoute(ValhallaAction valhallaAction, MfwRoute *route, QVariantList points)

Сигналы

void error(qreal code, QString message)
void offlinePathChanged(QString offlinePath)

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

Класс MfwOfflineRoutingBase позволяет реализовать функциональность автономной маршрутизации.

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

Описание типов-членов

enum MfwOfflineRoutingBase::TravelMode

Перечисляет различные виды транспорта, поддерживаемые системой маршрутизации.

Константа Значение Описание
MfwOfflineRoutingBase::Auto 0 Представляет поездки на автомобиле, включая личные транспортные средства и службы совместного использования поездок (карпулинг).
MfwOfflineRoutingBase::Taxi 1<<0 Представляет поездки на такси.
MfwOfflineRoutingBase::Bus 1<<1 Представляет поездки на городских автобусах.
MfwOfflineRoutingBase::MotorScooter 1<<2 Представляет поездки на мотороллерах, включая мотоциклы и мопеды.
MfwOfflineRoutingBase::Bicycle 1<<3 Представляет поездки на велосипеде, учитывая как личные велосипеды, так и услуги совместного использования велосипедов.
MfwOfflineRoutingBase::Pedestrian 1<<4 Представляет ходьбу или бег, ориентируясь на маршруты, подходящие для пешеходов.

enum MfwOfflineRoutingBase::ValhallaAction

Перечисляет действия, которые могут быть выполнены механизмом маршрутизации Valhalla.

ValhallaAction включает такие действия, как Route, Locate, SourcesToTargets, OptimizedRoute, Isochrone, TraceRoute, TraceAttributes, Height, TransitAvailable, Expansion и Status для различных задач маршрутизации.

Константа Значение Описание
MfwOfflineRoutingBase::Route 0 Рассчитывает маршруты между начальной и конечной точками.
MfwOfflineRoutingBase::Locate 1<<0 Определяет ближайшую дорогу или перекресток к заданной точке.
MfwOfflineRoutingBase::SourcesToTargets 1<<1 Вычисляет расстояния и время между несколькими источниками и целями.
MfwOfflineRoutingBase::OptimizedRoute 1<<2 Определяет наиболее эффективный маршрут, посещая ряд мест.
MfwOfflineRoutingBase::Isochrone 1<<3 Вычисляет области, достижимые за заданное время или расстояние.
MfwOfflineRoutingBase::TraceRoute 1<<4 Нанесение серии точек GPS на дорожную сеть.
MfwOfflineRoutingBase::TraceAttributes 1<<5 Предоставляет подробную информацию о сегментах трассируемого маршрута.
MfwOfflineRoutingBase::Height 1<<6 Получает данные о высоте для набора координат.
MfwOfflineRoutingBase::TransitAvailable 1<<7 Проверяет наличие общественного транспорта в определенном районе.
MfwOfflineRoutingBase::Expansion 1<<8 Предоставляет данные о распространении алгоритма маршрутизации по сети.
MfwOfflineRoutingBase::Status 1<<9 Возвращает информацию о рабочем состоянии механизма маршрутизации.

Описание свойств

offlinePath : QString

Функции доступа:

QString getOfflinePath() const
void setOfflinePath(QString offlinePath)

Сигнал уведомления:

void offlinePathChanged(QString offlinePath)

Описание функций-членов

MfwOfflineRoutingBase::MfwOfflineRoutingBase(QObject *parent = nullptr)

Конструктор для MfwOfflineRoutingBase с необязательным параметром parent.

Инициализирует новый экземпляр класса MfwOfflineRoutingBase.

MfwOfflineRoutingBase::~MfwOfflineRoutingBase()

Деструктор для MfwOfflineRoutingBase.

Очищает все ресурсы, используемые экземпляром.

[virtual] QVariantList MfwOfflineRoutingBase::decode(const std::string &encoded)

Декодирует закодированную строку полилинии в список QGeoCoordinates.

Закодированные полилинии обычно используются для компактного представления путей на карте. Этот метод декодирует их в пригодный для использования формат.

  • encoded — cтрока std::string, содержащая закодированную полилинию. Возвращает QVariantList, в котором каждый элемент представляет сегмент маршрута. Каждый сегмент содержит массив координат путевых точек. Каждая путевая точка представлена в виде QVariantList, содержащего два элемента: широту и долготу точки. Такая структура позволяет легко итеративно просматривать сегменты и путевые точки маршрута для визуализации или дальнейшей обработки.

[signal] void MfwOfflineRoutingBase::error(qreal code, QString message)

Испускается при возникновении ошибки во время маршрутизации.

code — код ошибки, указывающий на тип ошибки.

  • message — описательное сообщение с подробным описанием ошибки.

[virtual] MfwRoute *MfwOfflineRoutingBase::getRoute(ValhallaAction valhallaAction, bool shortest, qreal useTolls, qreal useHighways, TravelMode travelMode, QVariantList points, bool useOptimizations)

Рассчитывает маршрут на основе заданных параметров.

Использует механизм маршрутизации Valhalla для расчета маршрута с заданными предпочтениями и путевыми точками.

  • valhallaAction — конкретное действие Valhalla, которое необходимо выполнить.
  • shortest — нужно ли рассчитывать кратчайший маршрут.
  • useTolls — предпочтение платы за проезд для данного маршрута.
  • useHighways — предпочтение шоссе для маршрута.
  • travelMode — режим движения по маршруту.
  • points — это QVariantList, представляющий серию путевых точек, которые определяют маршрут. Каждый элемент списка представляет собой массив сегментов маршрута, каждый из которых содержит массив координат путевых точек. Каждая координата представлена в виде массива, содержащего широту и долготу точки, что структурирует путь маршрута по этим путевым точкам.
  • useOptimizations — нужно ли применять оптимизацию, например, данные о трафике. Возвращает указатель на объект MfwRoute, представляющий рассчитанный маршрут.
Page {

    MfwOfflineRouting {
        id: mRouter

        offlinePath: "path/to/valhalla/config"
    }

    Button {
        onClicked: {
            const locs = [];
            locs.push({ "lat": geocoordinate1.latitude, "lon": geocoordinate1.longitude });
            locs.push({ "lat": geocoordinate2.latitude, "lon": geocoordinate2.longitude });

            const routeResponse = mRouter.getRoute(MfwOfflineRouting.OptimizedRoute, true, 0.5, 1, MfwOfflineRouting.Auto, locs, false);

            drawRoute(routeResponse.points[0]);
        }
    }
}

QString MfwOfflineRoutingBase::getTravelMode(TravelMode travelMode)

Преобразует перечисление TravelMode в его строковое представление.

Этот метод облегчает использование значений перечисления TravelMode в пользовательских интерфейсах или журналах, предоставляя человекочитаемую строку.

  • travelMode — режим поездки для преобразования. Возвращает QString, представляющую указанный TravelMode.

[virtual] QString MfwOfflineRoutingBase::getValhallaOptimizedRoute(ValhallaAction valhallaAction, QString reqJSON)

Запрашивает оптимизированный маршрут у механизма маршрутизации Valhalla.

Отправляет запрос на маршрутизацию в формате JSON на движок Valhalla и получает оптимизированный маршрут.

  • valhallaAction — конкретное действие Valhalla, которое необходимо выполнить.
  • reqJSON — запрос на маршрутизацию в формате JSON. Возвращает QString, содержащий оптимизированный маршрут в формате JSON.
Page {

    MfwOfflineRouting {
        id: mRouter

        offlinePath: "path/to/valhalla/config"
    }

    Button {
        onClicked: {
            const locs = [];
            locs.push({ "lat": geocoordinate1.latitude, "lon": geocoordinate1.longitude });
            locs.push({ "lat": geocoordinate2.latitude, "lon": geocoordinate2.longitude });

            //Запрос в Valhalla в соответствии с API https://valhalla.github.io/valhalla/api/turn-by-turn/api-reference/</s17
            const request = {
                "locations": mainPage.locs,
                "costing": "auto"
            };

            const res = mRouter.getValhallaOptimizedRoute(MfwOfflineRouting.OptimizedRoute, JSON.stringify(request));


            if(res) {
                const legs = JSON.parse(res)["trip"]["legs"];
                const coords = [];
                sconst maneuvers = [];

                for (var i = 0; i < legs.length; i++) {
                    const legShape = legs[i]["shape"];
                    const legManeuvers = legs[i]["maneuvers"];

                    //Декодирует скрипт из https://valhalla.github.io/valhalla/decoding/#javascript
                    mainPage.coords = coords.concat(Decoder.decode(legShape));
                    mainPage.maneuvers =  maneuvers.concat(legManeuvers);
                }
                drawRoute(mainPage.coords);
            }
        }
    }
}

[signal] void MfwOfflineRoutingBase::offlinePathChanged(QString offlinePath)

Испускается при изменении свойства offlinePath.

  • offlinePath — новый путь к данным автономной карты.

Примечание. Сигнал уведомления для свойства offlinePath.

QJsonDocument MfwOfflineRoutingBase::prepareRequest(bool shortest, qreal useTolls, qreal useHighways, QString travelMode, QVariantList points, bool useOptimizations)

Готовит запрос на маршрутизацию в формате JSON.

Создает JSON-документ, содержащий параметры маршрутизации, который затем может быть использован для запроса маршрутов у механизма маршрутизации.

  • shortest — нужно ли рассчитывать кратчайший маршрут.
  • useTolls — предпочтение платы за проезд для данного маршрута.
  • useHighways — предпочтение шоссе для маршрута.
  • travelMode — режим движения по маршруту.
  • points — QVariantList, содержащий точки QGeoCoordinate, которые определяют путевые точки для маршрута. Каждый элемент списка — это географические координаты, используемые для построения маршрута, указывающие на конкретные места, через которые должен проходить маршрут или рядом с которыми он должен находиться.
  • useOptimizations — нужно ли оптимизацию, например, данные о трафике. Возвращает QJsonDocument, представляющий запрос на маршрутизацию.

void MfwOfflineRoutingBase::setOfflinePath(QString offlinePath)

Устанавливает путь к автономным картографическим данным, используемым механизмом маршрутизации.

Указывает, где находятся автономные картографические данные, позволяющие системе маршрутизации выполнять расчеты без подключения к Интернету.

  • offlinePath — QString, указывающая путь к файловой системе для данных автономной карты.

Примечание. Сеттер для свойства offlinePath.

[virtual] MfwRoute *MfwOfflineRoutingBase::updateRoute(ValhallaAction valhallaAction, MfwRoute *route, QVariantList points)

Обновление существующего маршрута новыми путевыми точками.

Модифицирует указанный маршрут, включая дополнительные путевые точки или изменения в маршруте.

  • valhallaAction — конкретное действие Valhalla, которое необходимо выполнить.
  • route — маршрут для обновления.
  • points — QVariantList, содержащий серию точек QGeoCoordinate, которые определяют новые путевые точки, добавляемые в маршрут. Каждый элемент списка представляет собой географическую координату, указывающую местоположение, через которое должен проходить обновлённый маршрут или рядом с которым он должен находиться. Это позволяет динамически корректировать маршрут, включая объезды, дополнительные остановки или изменения в пункте назначения. Возвращает указатель на обновленный объект MfwRoute.
function getTravelModeString(t) {
    switch (t) {
        case MfwOfflineRouting.Auto:
            return "auto";
        case MfwOfflineRouting.Taxi:
            return "taxi";
        case MfwOfflineRouting.Bus:
            return "bus";
        case MfwOfflineRouting.MotorScooter:
            return "motor_scooter";
        case MfwOfflineRouting.Bicycle:
            return "bicycle";
        case MfwOfflineRouting.Pedestrian:
            return "pedestrian";
        default:
            return "auto";
    }
}

Page {

    MfwOfflineRouting {
        id: mRouter

        offlinePath: "path/to/valhalla/config"
    }

    Button {
        onClicked: {
            const locs = [];
            locs.push({ "lat": geocoordinate1.latitude, "lon": geocoordinate1.longitude });
            locs.push({ "lat": geocoordinate2.latitude, "lon": geocoordinate2.longitude });

            const oldRoute = mRouter.getRoute(MfwOfflineRouting.OptimizedRoute, true, 0.5, 1, MfwOfflineRouting.Auto, locs, false);

            oldRoute.travelMode = getTravelModeString(MfwOfflineRouting.Pedestrian);

            const newRoute = mRouter.updateRoute(MfwOfflineRouting.OptimizedRoute, oldRoute, [oldRoute.origin, oldRoute.destination]);

            drawRoute(newRoute)
        }
    }
}

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.