QGeoCodingManagerEngine 类

QGeoCodingManagerEngine 类提供了一个接口和便利方法,旨在帮助实现 QGeoServiceProvider 插件的开发者提供对地理编码操作的支持。有关详细信息,请参阅更多...

头文件 #include <QGeoCodingManagerEngine>
qmakeQT += location
继承 QObject

公共函数

QGeoCodingManagerEngine(const QVariantMap &parameters, QObject *parent = nullptr)
虚拟~QGeoCodingManagerEngine()
虚拟 QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds)
虚拟 QGeoCodeReply *geocode(const QString &address, int limit, int offset, const QGeoShape &bounds)
QLocalelocale() const
QStringmanagerName() const
intmanagerVersion() const
虚拟 QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds)
voidsetLocale(const QLocale &locale)

信号

voiderrorOccurred(QGeoCodeReply *reply, QGeoCodeReply::Error error, const QString &errorString = QString())
voidfinished(QGeoCodeReply *reply)

详细描述

注意: 对于后端类,没有源或二进制兼容性保证。API 只确保与开发它时所针对的 Qt 版本兼容。但是 API 变更只会发生在次要版本中。(6.6、6.7 等等。)

在默认实现中,supportsGeocoding() 和 supportsReverseGeocoding() 返回 false,而 geocode() 和 reverseGeocode() 会导致 QGeoCodeReply::UnsupportedOptionError 发生。

如果服务提供商支持地理编码,子类应提供 geocode() 的实现,并在调用 geocode() 之前某个时间点调用 setSupportsGeocoding(true)。

类似地,如果服务提供商支持反向地理编码,子类应提供 reverseGeocode() 的实现,并在调用 reverseGeocode() 之前某个时间点调用 setSupportsReverseGeocoding(true)。

QGeoCodingManagerEngine 的子类通常会在内部使用 QGeoCodeReply 的子类,以便将任何特定于引擎的数据(例如,为基于网络的服务的 QNetworkReply 对象)添加到引擎使用的 QGeoCodeReply 实例中。

另请参阅 QGeoCodingManager

成员函数文档

[显式] QGeoCodingManagerEngine::QGeoCodingManagerEngine(const QVariantMap &parameters, QObject *parent = nullptr)

使用指定的父对象构造一个新的引擎,使用参数将任何特定于实现的业务数据传递给引擎。

[虚函数诺投掷异常] QGeoCodingManagerEngine::~QGeoCodingManagerEngine()

销毁此引擎。

[信号] void QGeoCodingManagerEngine::errorOccurred(QGeoCodeReply *reply, QGeoCodeReply::Error error, const QString &errorString = QString())

在该信号释放过程中检测到错误时,会发出此信号。可能会接着发出QGeoCodingManagerEngine::finished() 信号。

错误将由错误代码error描述。如果errorString不为空,则它将包含错误的文本描述。

此信号和QGeoCodeReply::errorOccurred() 将同时触发。

注意:不要在连接到此信号的槽中删除reply 对象。请使用 deleteLater() 代替。

[信号] void QGeoCodingManagerEngine::finished(QGeoCodeReply *reply)

reply 完成处理时,会发出此信号。

如果reply::error() 等于QGeoCodeReply::NoError,则处理成功完成。

此信号和QGeoCodeReply::finished() 将同时触发。

注意:不要在连接到此信号的槽中删除reply 对象。请使用 deleteLater() 代替。

[虚函数] QGeoCodeReply *QGeoCodingManagerEngine::geocode(const QGeoAddress &address, const QGeoShape &bounds)

开始对address进行地理编码。地理编码是找到对应给定地址的坐标的过程。

将返回一个 QGeoCodeReply 对象,该对象可以用于管理地理编码操作以及返回操作结果。

该引擎和返回的QGeoCodeReply 对象将发出信号,指示操作是否完成或发生错误。

如果 acceptsGeocoding() 返回 false,则会发生QGeoCodeReply::UnsupportedOptionError

操作完成后,可以使用QGeoCodeReply::locations() 获取结果,结果将包含一个QGeoLocation 对象的列表。这些对象代表坐标和地址数据的组合。

结果中返回的地址数据可能与address不同。这通常发生在地理编码后端服务使用不同的地址标准形式或地址address只填写了一部分时。

如果 bounds 非空且为有效的 QGeoShape 类型,它将被用来限制结果,只包含 在 bounds 中的那些。当 address 只部分填写时,这特别有用,因为服务将尝试对指定数据的所有匹配项进行地理编码。

用户负责删除返回的回复对象,尽管可以在连接到 QGeoCodingManagerEngine::finished()、QGeoCodingManagerEngine::errorOccurred()、QGeoCodeReply::finished() 或 QGeoCodeReply::errorOccurred() 的槽中进行删除 deleteLater

[虚函数] QGeoCodeReply *QGeoCodingManagerEngine::geocode(const QString &address, int limit, int offset, const QGeoShape &bounds)

开始对匹配 address 的位置进行地理编码。

将返回一个 QGeoCodeReply 对象,该对象可以用于管理地理编码操作以及返回操作结果。

该引擎和返回的QGeoCodeReply 对象将发出信号,指示操作是否完成或发生错误。

操作完成后,可以使用QGeoCodeReply::locations() 获取结果,结果将包含一个QGeoLocation 对象的列表。这些对象代表坐标和地址数据的组合。

如果 limit 为 -1,将返回整个结果集,否则最多返回 limit 条结果。

offset 参数用于请求地理编码服务不要返回前 offset 条结果。

limitoffset 结果一起用于实现分页。

如果 bounds 非空且为有效的 QGeoShape 类型,它将被用来限制结果,只包含在 bounds 中的那些。

用户负责删除返回的回复对象,尽管可以在连接到 QGeoCodingManagerEngine::finished()、QGeoCodingManagerEngine::errorOccurred()、QGeoCodeReply::finished() 或 QGeoCodeReply::errorOccurred() 的槽中进行删除 deleteLater

QLocale QGeoCodingManagerEngine::locale() const

返回用于提示此地理编码管理器使用哪种语言的区域设置。

另请参阅setLocale

QString QGeoCodingManagerEngine::managerName() const

返回此引擎实现使用的名称,以区分它与其他插件提供的实现。

managerName() 和 managerVersion() 的组合应在插件实现之间是唯一的。

int QGeoCodingManagerEngine::managerVersion() const

返回此引擎实现的版本。

managerName() 和 managerVersion() 的组合应在插件实现之间是唯一的。

[虚函数] QGeoCodeReply *QGeoCodingManagerEngine::reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds)

开始对 coordinate 进行反向地理编码。反向地理编码是查找与给定坐标对应的地址的过程。

将返回一个 QGeoCodeReply 对象,用于管理反向地理编码操作以及返回操作结果。

该引擎和返回的QGeoCodeReply 对象将发出信号,指示操作是否完成或发生错误。

如果 supportsReverseGeocoding() 返回 false,则会发生 QGeoCodeReply::UnsupportedOptionError

在该点,可以使用 QGeoCodeReply::locations() 来检索结果,这些结果将包括一个 QGeoLocation 对象的列表。这些对象代表坐标和地址数据的组合。

结果中返回的坐标数据可能不同于原始坐标。这通常发生在反向地理编码服务后端将坐标移动到与匹配地址更近的位置时,或者后端返回多个详细级别的结果时。

如果反向地理编码服务后端返回多个结果,它们将按特定性顺序提供。这通常发生在后端配置为跨多个详细级别进行反向地理编码的情况下。例如,一些服务将返回街道地址、城市、州和国家的地址和坐标对。

如果 bounds 非空且为有效的 QGeoShape 类型,它将被用来限制结果,只包含在 bounds 中的那些。

用户负责删除返回的回复对象,尽管可以在连接到 QGeoCodingManagerEngine::finished()、QGeoCodingManagerEngine::errorOccurred()、QGeoCodeReply::finished() 或 QGeoCodeReply::errorOccurred() 的槽中进行删除 deleteLater

void QGeoCodingManagerEngine::setLocale(const QLocale &locale)

将此管理器使用的区域设置设置为 locale

如果此地理编码管理器支持以不同语言返回结果,则将按 locale 的语言返回。

如果未设置,则默认使用系统区域设置。

另请参阅 locale

© 2024 Qt公司。此处包含的文档贡献的版权归各自的拥有者。此处提供的文档是根据自由软件开发基金会发布的版本1.3的 GNU自由文档许可证 许可的。Qt及相关标志是芬兰的Qt公司和/或世界其他国家的商标。所有其他商标属于其各自的所有者。