QPlaceManager 类

QPlaceManager 类提供接口,允许客户端访问特定后端存储的地点。 更多...

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

公共函数

虚拟~QPlaceManager()
QPlaceCategorycategory(const QString &categoryId) const
QList<QPlaceCategory>childCategories(const QString &parentId = QString()) const
QStringListchildCategoryIds(const QString &parentId = QString()) const
QPlacecompatiblePlace(const QPlace &original) const
QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request) const
QPlaceDetailsReply *getPlaceDetails(const QString &placeId) const
QPlaceReply *initializeCategories()
QList<QLocale>locales() const
QStringmanagerName() const
intmanagerVersion() const
QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request) const
QStringparentCategoryId(const QString &categoryId) const
QPlaceIdReply *removeCategory(const QString &categoryId)
QPlaceIdReply *removePlace(const QString &placeId)
QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId = QString())
QPlaceIdReply *savePlace(const QPlace &place)
QPlaceSearchReply *search(const QPlaceSearchRequest &request) const
QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request) const
voidsetLocale(const QLocale &locale)
voidsetLocales(const QList<QLocale> &locales)

信号

voidcategoryAdded(const QPlaceCategory &category, const QString &parentId)
voidcategoryRemoved(const QString &categoryId, const QString &parentId)
voidcategoryUpdated(const QPlaceCategory &category, const QString &parentId)
voiddataChanged()
voiderrorOccurred(QPlaceReply *reply, QPlaceReply::Error error, const QString &errorString = QString())
void完成(QPlaceReply *reply)
voidplaceAdded(const QString &placeId)
voidplaceRemoved(const QString &placeId)
voidplaceUpdated(const QString &placeId)

详细说明

以下表格概述了QPlaceManager提供的功能。

功能描述
搜索地点使用搜索词和搜索区域等参数的集合,可以返回相关的地点给用户。
分类地点可以被分类为属于不同的类别。管理者支持访问这些类别。
搜索词建议给定一个部分完整的搜索词,可以提供一个潜在搜索词的列表。
推荐给定一个现有的地点,可以给用户建议一组相似的推荐地点。
丰富内容可以通过分页的方式检索丰富内容,如图片、评论等。
地点或分类管理地点和分类可以保存和删除。当发生这些操作时,可能会发送通知。
本地化可以指定不同的区域设置以返回不同语言的地点数据。

获取QPlaceManager实例

通过QGeoServiceProvider简化了QPlaceManager的创建。有关如何创建管理器的示例,请参阅初始化管理器

异步接口

QPlaceManager类提供了对包含地点信息的数据仓库的抽象。QPlaceManager提供的函数主要是异步的,并遵循请求-回复模型。通常给管理者提供一个请求,该请求包含一系列参数和一个回复对象被创建。回复对象有一个信号在请求完成时通知,一旦完成,回复包含请求的结果,以及可能发生的任何错误。

异步请求通常按照以下方式处理

//1) Make an appropriate request
QPlaceSearchRequest searchRequest;
searchRequest.setSearchTerm("ice cream");
searchRequest.setSearchArea(QGeoCircle(QGeoCoordinate(12.34, 56.78)));

//2) Use the manager to initiate a request and retrieve a reply object
QPlaceSearchReply * searchReply = manager->search(searchRequest);

//3) Connect the reply object to a slot which is invoked upon operation completion
connect(searchReply, &QPlaceSearchReply::finished,
        this, &RequestHandler::processSearchReply);
    ...
    ...
//4) Have the slot appropriately process the results of the operation
void processSearchReply() {
    if (searchReply->error() == QPlaceReply::NoError) {
        for (const QPlaceSearchResult &result : searchReply->results()) {
            if (result.type() == QPlaceSearchResult::PlaceResult)
                qDebug() << "Title:" << result.title();
        }
    }

//5) Discard the rely object when done.
    searchReply->deleteLater();
    searchReply = nullptr;
}

请参阅常见操作以获取示例,演示了如何使用QPlaceManger。

分类初始化

在应用程序启动过程中某个时候,应该调用initializeCategories()函数来设置分类。初始化分类可以使用以下函数

如果需要刷新或重新加载分类,可以再次调用initializeCategories()函数。

成员函数文档

[虚拟 noexcept] QPlaceManager::~QPlaceManager()

销毁管理器。此析构函数由QGeoServiceProvider内部使用,并且不应在应用程序代码中调用。

QPlaceCategory QPlaceManager::category(const QString &categoryId) const

返回给定categoryId对应的分类。

[信号] void QPlaceManager::categoryAdded(const QPlaceCategory &category, const QString &parentId)

如果将一个类别添加到管理器的数据存储中,则会发出此信号。通过parentId指定该类别的父项。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

[信号] void QPlaceManager::categoryRemoved(const QString &categoryId, const QString &parentId)

当对应的categoryId的类别已从管理器的数据存储中删除时,会发出此信号。删除的类别的父项由parentId指定。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

[信号] void QPlaceManager::categoryUpdated(const QPlaceCategory &category, const QString &parentId)

如果管理器数据存储中的类别被修改,则会发出此信号。修改的类别的父项由parentId指定。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

QList<QPlaceCategory> QPlaceManager::childCategories(const QString &parentId = QString()) const

返回与对应于parentId的类别相对应的子类别的列表。如果parentId为空,则返回所有顶级类别。

QStringList QPlaceManager::childCategoryIds(const QString &parentId = QString()) const

返回与对应于parentId的类别相对应的子类别标识符。如果parentId为空,则返回所有顶级类别标识符。

QPlace QPlaceManager::compatiblePlace(const QPlace &original) const

返回一个剪切或修改后的original地点的版本,该版本适合保存到管理器中。

修改后的版本中只包含此管理器支持的位置详细信息。不复制父数据,例如地点ID。

[信号] void QPlaceManager::dataChanged()

如果管理器其基础数据存储有大规模更改,并且管理器认为这些更改足够剧烈,需要客户端重新加载数据,则管理器会发出此信号。

如果发出信号,则不会为关联的更改发出其他信号。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

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

当处理回复时检测到错误时,会发出此信号。可能会随后发出QPlaceManager::finished()信号。

错误将由错误代码错误描述。如果错误字符串不为空,它将包含错误文本描述,供开发人员使用,而不是最终用户。

此信号和QPlaceReply::errorOccurred()将同时发出。

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

[信号] void QPlaceManager::finished(QPlaceReply *reply)

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

如果reply->error()等于QPlaceReply::NoError,那么处理成功完成。

此信号和QPlaceReply::finished()将同时发出。

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

QPlaceContentReply *QPlaceManager::getPlaceContent(const QPlaceContentRequest &request) const

根据request中指定的参数检索地点的内容。

有关使用示例,请参阅获取丰富内容

QPlaceDetailsReply *QPlaceManager::getPlaceDetails(const QString &placeId) const

根据给定的placeId检索地点的详细信息。

有关使用示例,请参阅获取地点详情

QPlaceReply *QPlaceManager::initializeCategories()

初始化管理器的类别。

有关使用示例,请参阅使用类别

QList<QLocale> QPlaceManager::locales() const

返回首选区域列表。这些区域用作提示,指明应返回哪一种语言的地方和类别细节。

如果无法满足第一个指定期域,则会回退到下一个,依此类推。某些管理器后端可能不支持严格定义的一组区域。一个任意示例是,法国的一些地方可能会有法语和英语本地化,而美国的某些地区可能只有英语本地化可用。在此例中,支持的区域集取决于搜索位置。

如果管理器无法满足任何首选的区域,则回退到使用特定后端的支持语言。

区域支持可能因服务提供商而异。对于那些支持它的供应商,默认情况下,全局默认区域被设置为管理器的唯一区域。

对于不支持区域的管理器,区域列表始终为空。

另请参阅:setLocales()。

QString QPlaceManager::managerName() const

返回管理员的名称

int QPlaceManager::managerVersion() const

返回管理器版本。

QPlaceMatchReply *QPlaceManager::matchingPlaces(const QPlaceMatchRequest &request) const

返回一个回复,其中包含与请求中指定的对应/匹配的地点列表。请求中指定的地点来自不同的管理器。

QString QPlaceManager::parentCategoryId(const QString &categoryId) const

返回与categoryId对应的分类的父分类标识符。

[信号] void QPlaceManager::placeAdded(const QString &placeId)

如果已将地点添加到管理器引擎的数据存储中,则发出此信号。通过 placeId 指定特定的添加地点。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

[信号] void QPlaceManager::placeRemoved(const QString &placeId)

如果已从管理器数据存储中删除地点,则发出此信号。通过 placeId 指定被删除的特定地点。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

[信号] void QPlaceManager::placeUpdated(const QString &placeId)

如果已修改管理器数据存储中的地点,则发出此信号。通过 placeId 指定被修改的特定地点。

只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。

另请参阅数据已更改

QPlaceIdReply *QPlaceManager::removeCategory(const QString &categoryId)

从管理器中删除与categoryId对应的分类。

有关用法示例,请参阅删除分类

QPlaceIdReply *QPlaceManager::removePlace(const QString &placeId)

从管理器中删除与placeId对应的地点。

有关用法示例,请参阅删除地点 cpp

QPlaceIdReply *QPlaceManager::saveCategory(const QPlaceCategory &category, const QString &parentId = QString())

保存是parentId指定的分类的子分类的category。空parentId表示将category作为顶级分类保存。

有关用法示例,请参阅保存分类

QPlaceIdReply *QPlaceManager::savePlace(const QPlace &place)

保存指定的place

有关用法示例,请参阅保存地点 cpp

根据在request中指定的参数搜索地点。

有关使用示例,请参阅发现/搜索

QPlaceSearchSuggestionReply *QPlaceManager::searchSuggestions(const QPlaceSearchRequest &request) const

根据在request中指定的参数请求一系列搜索词建议。此request可以包含不完整的搜索词,以及其他搜索区域等数据,以缩小相关结果。

有关使用示例,请参阅搜索建议

void QPlaceManager::setLocale(const QLocale &locale)

方便函数,将管理器的首选区域列表设置为一个单独的locale

void QPlaceManager::setLocales(const QList<QLocale> &locales)

设置首选locales列表。

另请参阅 locales

© 2024 Qt有限公司。此文档中包含的贡献的文档版权属于其各自的所有者。提供的文档是根据自由软件基金会根据GNU自由文档许可证版本1.3的条款许可的。Qt和相关的徽标是芬兰的和/或在其他全球国家的The Qt Company Ltd.的商标。所有其他商标归其各自的所有者所有。