Класс MfwOfflineRoutingBase
Класс MfwOfflineRoutingBase позволяет реализовать функциональность автономной маршрутизации. Подробнее…
Подключение: | #include <MfwOfflineRoutingBase> |
Публичные типы
enum | TravelMode |
enum | ValhallaAction |
Свойства
- offlinePath : QString
Публичные функции
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)
}
}
}