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 的子类,以便在引擎使用的QGeoRouteReply 实例中添加任何特定于引擎的数据(如基于网络服务的QNetworkReply 对象)。
另请参阅 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() 。
© 2025 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.