Класс 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