QGeoRoutingManagerEngine Class
QGeoRoutingManagerEngine 类为希望提供地理路由信息访问功能的QGeoServiceProvider 插件开发者提供了接口和便捷方法。更多内容...
| Header: | #include <QGeoRoutingManagerEngine> |
| qmake: | QT += location |
| Inherits: | QObject |
公共函数
| QGeoRoutingManagerEngine(const QVariantMap ¶meters, QObject *parent = nullptr) | |
| virtual | ~QGeoRoutingManagerEngine() |
| virtual QGeoRouteReply * | calculateRoute(const QGeoRouteRequest &request) = 0 |
| 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 |
| virtual QGeoRouteReply * | updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) |
信号
| void | errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString()) |
| void | finished(QGeoRouteReply *reply) |
受保护函数
| void | setSupportedFeatureTypes(QGeoRouteRequest::FeatureTypes featureTypes) |
| void | setSupportedFeatureWeights(QGeoRouteRequest::FeatureWeights featureWeights) |
| void | setSupportedManeuverDetails(QGeoRouteRequest::ManeuverDetails maneuverDetails) |
| void | setSupportedRouteOptimizations(QGeoRouteRequest::RouteOptimizations optimizations) |
| void | setSupportedSegmentDetails(QGeoRouteRequest::SegmentDetails segmentDetails) |
| void | setSupportedTravelModes(QGeoRouteRequest::TravelModes travelModes) |
详细说明
注意:不保证 后端类的源代码或二进制兼容性。仅保证 API 可与开发时所基于的 Qt 版本配合使用。不过,API 变更仅会在次要版本(如 6.6、6.7 等)中进行。
QGeoRoutingManagerEngine 的子类需要提供calculateRoute() 的实现。
在默认实现中,supportsRouteUpdates() 返回 false,而updateRoute() 返回一个包含QGeoRouteReply::UnsupportedOptionError 的QGeoRouteReply 对象。
如果路由服务支持在行进过程中更新路线,子类应提供updateRoute() 的实现,并在调用updateRoute() 之前某个时间点调用 setSupportsRouteUpdates(true)。
setSupportsRouteUpdates() 函数是用于配置引擎报告能力的若干函数之一。如果引擎的能力与默认值不同,应使用这些函数以确保报告的能力准确无误。
必须在调用calculateRoute()、updateRoute() 或任何能力报告函数之前完成此操作,以防止出现错误或不一致的行为。
QGeoRouteManagerEngine 的子类通常会在内部使用QGeoRouteReply 的子类,以便将任何引擎特有的数据(例如用于基于网络服务的QNetworkReply 对象)添加到引擎所使用的QGeoRouteReply 实例中。
另请参阅 QGeoRoutingManager 。
成员函数文档
[explicit] QGeoRoutingManagerEngine::QGeoRoutingManagerEngine(const QVariantMap ¶meters, QObject *parent = nullptr)
使用指定的parent 构建一个新的引擎,并通过parameters 将任何与实现相关的数据传递给该引擎。
[virtual noexcept] QGeoRoutingManagerEngine::~QGeoRoutingManagerEngine()
会损坏这台发动机。
[pure virtual] QGeoRouteReply *QGeoRoutingManagerEngine::calculateRoute(const QGeoRouteRequest &request)
开始计算由 `request` 指定的路线。
将返回一个QGeoRouteReply 对象,该对象可用于管理路由操作并返回操作结果。
该引擎和返回的QGeoRouteReply 对象将发出信号,指示操作是否完成或是否发生错误。
操作完成后,可以使用QGeoRouteReply::routes 检索计算出的路线。
如果request 包含本引擎不支持的功能(如本引擎中的方法所报告的那样),则会发生QGeoRouteReply::UnsupportedOptionError 。
用户有责任删除返回的回复对象,尽管这也可以在连接到QGeoRoutingManagerEngine::finished()、QGeoRoutingManagerEngine::errorOccurred()、QGeoRouteReply::finished() 或QGeoRouteReply::errorOccurred() 的插槽中,通过deleteLater() 来完成。
[signal] void QGeoRoutingManagerEngine::errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())
当在处理reply 时检测到错误时,将发出此信号。随后可能会发出QGeoRoutingManagerEngine::finished()信号。
该错误将由错误代码error 描述。如果errorString 不为空,则其中将包含该错误的文本描述。
该信号与QGeoRouteReply::errorOccurred() 将同时发出。
注意:请 勿在与该信号关联的槽中删除reply 对象。请改用deleteLater()。
[signal] void QGeoRoutingManagerEngine::finished(QGeoRouteReply *reply)
当reply 处理完成时,会发出此信号。
如果 reply::error() 等于QGeoRouteReply::NoError ,则表示处理已成功完成。
该信号和QGeoRouteReply::finished() 将同时发出。
注意:请 勿在连接到此信号的槽中删除reply 对象。请改用deleteLater()。
QLocale QGeoRoutingManagerEngine::locale() const
返回用于向此路由管理器提示应使用何种语言显示地址和说明的区域设置。
另请参阅 setLocale()。
QString QGeoRoutingManagerEngine::managerName() const
返回该引擎实现用于将其与其他插件提供的实现区分开的名称。
managerName() 与managerVersion() 的组合在所有插件实现中应保持唯一。
int QGeoRoutingManagerEngine::managerVersion() const
返回此引擎实现的版本号。
managerName() 与 managerVersion() 的组合在所有插件实现中应是唯一的。
QLocale::MeasurementSystem QGeoRoutingManagerEngine::measurementSystem() const
返回此管理器所使用的度量系统。
如果已调用 `setMeasurementSystem()`,则该函数返回的值可能与 `locale()` 和 `measurementSystem()` 返回的值不同。在这种情况下,该函数返回的值即为管理器将使用的值。
另请参阅 setMeasurementSystem() 和setLocale()。
void QGeoRoutingManagerEngine::setLocale(const QLocale &locale)
将此管理器使用的区域设置为locale 。
如果此路由管理器支持以不同语言返回地址和说明,则将使用locale 指定的语言返回。
如果未设置,则默认使用系统区域设置。
另请参阅 locale()。
void QGeoRoutingManagerEngine::setMeasurementSystem(QLocale::MeasurementSystem system)
将此管理器使用的度量系统设置为system 。
度量系统可以独立于区域设置进行设置。setLocale() 和本函数均可设置度量系统,系统将采用最后一次调用的函数所设定的值。
另请参阅 measurementSystem()、locale() 和setLocale()。
[protected] void QGeoRoutingManagerEngine::setSupportedFeatureTypes(QGeoRouteRequest::FeatureTypes featureTypes)
将该引擎在路线规划过程中可考虑的要素类型设置为featureTypes 。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此方法,引擎将报告其不支持任何特征类型。
另请参阅 supportedFeatureTypes()。
[protected] void QGeoRoutingManagerEngine::setSupportedFeatureWeights(QGeoRouteRequest::FeatureWeights featureWeights)
将该引擎在路线规划过程中可对不同特征应用的权重设置为featureWeights 。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此方法,引擎将报告其完全不支持特征权重。
另请参阅 supportedFeatureWeights()。
[protected] void QGeoRoutingManagerEngine::setSupportedManeuverDetails(QGeoRouteRequest::ManeuverDetails maneuverDetails)
设置导航机动操作的详细程度,该引擎可向maneuverDetails 请求这些信息。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此方法,引擎将报告其完全不支持任何机动细节。
另请参阅 supportedManeuverDetails()。
[protected] void QGeoRoutingManagerEngine::setSupportedRouteOptimizations(QGeoRouteRequest::RouteOptimizations optimizations)
将该引擎支持的路径优化功能设置为optimizations 。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此方法,引擎将报告其完全不支持任何路径优化。
另请参阅 supportedRouteOptimizations()。
[protected] void QGeoRoutingManagerEngine::setSupportedSegmentDetails(QGeoRouteRequest::SegmentDetails segmentDetails)
设置路由段的详细程度,该引擎可向segmentDetails 请求此信息。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此函数,引擎将报告其完全不支持路段详细信息。
另请参阅 supportedSegmentDetails()。
[protected] void QGeoRoutingManagerEngine::setSupportedTravelModes(QGeoRouteRequest::TravelModes travelModes)
将该引擎支持的旅行模式设置为travelModes 。
子类必须使用此方法,以确保引擎能正确报告其功能。若未使用此方法,引擎将报告其不支持任何旅行模式。
另请参阅 supportedTravelModes()。
QGeoRouteRequest::FeatureTypes QGeoRoutingManagerEngine::supportedFeatureTypes() const
返回该引擎在路线规划过程中可考虑的要素类型。
另请参阅 setSupportedFeatureTypes()。
QGeoRouteRequest::FeatureWeights QGeoRoutingManagerEngine::supportedFeatureWeights() const
返回该引擎在路线规划过程中可对不同特征应用的权重。
另请参阅 setSupportedFeatureWeights()。
QGeoRouteRequest::ManeuverDetails QGeoRoutingManagerEngine::supportedManeuverDetails() const
返回该引擎可请求的导航动作的详细程度。
另请参阅 setSupportedManeuverDetails()。
QGeoRouteRequest::RouteOptimizations QGeoRoutingManagerEngine::supportedRouteOptimizations() const
返回该引擎支持的路径优化功能。
另请参阅 setSupportedRouteOptimizations()。
QGeoRouteRequest::SegmentDetails QGeoRoutingManagerEngine::supportedSegmentDetails() const
返回该引擎可请求的路由路段详细程度。
另请参阅 setSupportedSegmentDetails()。
QGeoRouteRequest::TravelModes QGeoRoutingManagerEngine::supportedTravelModes() const
返回该引擎支持的移动模式。
另请参阅 setSupportedTravelModes()。
[virtual] QGeoRouteReply *QGeoRoutingManagerEngine::updateRoute(const QGeoRoute &route, const QGeoCoordinate &position)
开始根据当前位置position 更新route 的过程。
将返回一个QGeoRouteReply 对象,该对象可用于管理路由操作并返回操作结果。
该引擎和返回的QGeoRouteReply 对象将发出信号,指示操作是否完成或是否发生错误。
如果 supportsRouteUpdates() 返回 false,则会触发一个QGeoRouteReply::UnsupportedOptionError 。
操作完成后,可以使用 `QGeoRouteReply::routes ` 检索更新后的路线。
返回的路线可能与原始路线完全不同,特别是当position 与初始路线相距较远时。否则,路线将保持相似,尽管剩余时间和距离将得到更新,且原始路线中已通过的任何路段都将被移除。
用户需负责删除返回的回复对象,不过也可以在与QGeoRoutingManagerEngine::finished()、QGeoRoutingManagerEngine::errorOccurred()、QGeoRouteReply::finished() 或QGeoRouteReply::errorOccurred() 关联的插槽中,通过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.