PlaceSearchModel QML 类型
提供对位置搜索结果的访问。 更多信息...
导入语句 | import QtLocation 6.7 |
自 | QtLocation 5.5 |
属性
- categories : list<Category>
- count : int
- favoritesMatchParameters : VariantMap
- favoritesPlugin : Plugin
- incremental : bool
(自 QtLocation 5.12)
- limit : int
- nextPagesAvailable : bool
- plugin : Plugin
- previousPagesAvailable : bool
- recommendationId : string
- relevanceHint : enumeration
- searchArea : variant
- searchTerm : string
- status : enum
- visibilityScope : enum
方法
- void cancel()
- Variant data(int index, string role)
- string errorString()
- void nextPage()
- void previousPage()
- void reset()
- void update()
- void updateWith(int proposedSearchIndex)
详细说明
PlaceSearchModel 提供了对搜索区域内的位置搜索结果的模型。可以通过设置 searchTerm 和 categories 属性来限制搜索结果以匹配这些标准。
PlaceSearchModel 返回赞助搜索结果和有机搜索结果。赞助搜索结果将设置 sponsored
角色为 true。
模型返回以下角色的数据
角色 | 类型 | 描述 |
---|---|---|
type | enum | 搜索结果的类型。 |
title | string | 描述搜索结果的字符串。 |
icon | PlaceIcon | 表示搜索结果的图标。 |
distance | real | 仅在type 角色是PlaceResult 时有效,表示从搜索区域中心到地点的距离。如果没有指定searchArea ,距离值为NaN。 |
地点 | 地点 | 仅在type 角色是PlaceResult 时有效,表示地点的对象。 |
赞助 | bool | 仅在type 角色是PlaceResult 时有效,如果搜索结果是赞助结果则为true。 |
搜索结果类型
type
角色可取以下值
PlaceSearchModel.UnknownSearchResult | 搜索结果的内容未知。 |
PlaceSearchModel.PlaceResult | 搜索结果包含地点。 |
PlaceSearchModel.ProposedSearchResult | 搜索结果包含可能相关的建议搜索。 |
根据搜索结果类型使用Loader创建代理通常很有帮助,它可以根据搜索结果类型选择不同的组件。
Component { id: resultDelegate Loader { Component { id: placeResult Column { Text { text: title } Text { text: place.location.address.text } } } Component { id: otherResult Text { text: title } } sourceComponent: type == PlaceSearchModel.PlaceResult ? placeResult : otherResult } }
检测更新和删除的地点
PlaceSearchModel监听其插件后端中更新或删除的地点。如果检测到地点已更新并且该地点目前在模型中,则将调用Place::getDetails来刷新详细信息。如果检测到地点已被删除,则如果该地点目前存在于模型中,则相应地将该地点从模型中删除。
示例
以下示例说明如何使用PlaceSearchModel在给定位置附近搜索比萨饼餐厅。为模型提供searchTerm和searchArea,并使用update()来执行查找查询。请注意,模型不会增量地获取搜索结果,而是在运行update
()时执行单个获取。将count设置为在获取期间返回的搜索结果的数量。
import QtQuick import QtPositioning import QtLocation PlaceSearchModel { id: searchModel plugin: myPlugin searchTerm: "food" searchArea: QtPositioning.circle(startCoordinate, 5000 /* 5 km radius */); Component.onCompleted: update() }
分页
PlaceSearchModel API支持分页的一些有限操作。可以使用nextPage()和previousPage()函数以及limit属性来访问分页搜索结果。当设置limit
属性时,搜索结果页最多包含limit
条记录(类型为地点结果)。例如,如果后端总共有5个搜索结果[b,a,c,d,e],并且假设显示了第一页并且设置了3的限制,则返回b,a,c。执行nextPage()会返回d,e。可以使用nextPagesAvailable和previousPagesAvailable属性来检查是否有更多页面。目前,该API不支持从后端检索项目总数的手段。请注意,根据plugin
的不同,对nextPage()、previousPage()和limit
的支持可能有所不同。
另请参阅 CategoryModel 和 QPlaceManager。
属性文档
count : int |
此属性保存模型的结果数量。
注意,这并不指后端中可用的总搜索结果数量。API目前不支持搜索结果的总数。
favoritesMatchParameters : VariantMap |
此属性保存用于指定如何将搜索结果位置与favoritesPlugin中的收藏匹配的一组参数。
默认情况下,参数映射为空,表示收藏插件通过替代标识符进行匹配。通常,应用程序开发者不需要设置此属性。
在收藏插件不支持通过替代标识符进行匹配的情况下,应查阅插件文档,以了解需要设置哪些精确的键值参数。
favoritesPlugin : Plugin |
incremental : bool |
此属性控制分页如何影响PlaceSearchModel。如果为true,则调用previousPage或nextPage将不会重置模型,但新结果将追加到模型中。默认为false。
此属性是在QtLocation 5.12中引入的。
limit : int |
此属性保存将要返回的项目数量限制。
previousPagesAvailable : bool |
此属性表示是否有更多前面搜索结果页面可用。
另请参阅 previousPage()。
recommendationId : string |
此属性存储用于查找类似地点的placeId。
relevanceHint : 枚举 |
此属性持有用于搜索查询的相关提示。提示被提供给供应商以帮助但不会规定结果排序。例如,距离提示可能会使更近的地点获得更高的排名,但这并不一定意味着结果将严格按照距离排序。供应商可能完全忽略该提示。
SearchResultModel.UnspecifiedHint | 未向供应商提供相关提示。 |
SearchResultModel.DistanceHint | 地点与用户当前位置的距离对用户很重要。此提示仅在圆形搜索区域中使用时才有意义。 |
SearchResultModel.LexicalPlaceNameHint | 地点名称的词汇顺序(按字母顺序升序排序)与用户相关。此提示对基于本地数据存储的供应商很有用。 |
searchArea : variant |
searchTerm : string |
此属性存储查询中使用的搜索词。搜索词是一个自由文本字符串。
status : 枚举 |
此属性存储模型的状态。它可以是一个
PlaceSearchModel.Null | 尚未执行搜索查询。模型为空。 |
PlaceSearchModel.Ready | 搜索查询已完成,结果可用。 |
PlaceSearchModel.Loading | 正在执行搜索查询。 |
PlaceSearchModel.Error | 在执行先前搜索查询时发生错误。 |
visibilityScope : 枚举 |
此属性存储要搜索地点的可见范围。只有具有指定可见性的地点才会出现在搜索结果中。
可见范围可以是以下之一
Place.UnspecifiedVisibility | 未指定明确的可见范围,任何可见性的地点都可能包含在搜索结果中。 |
Place.DeviceVisibility | 仅存储在本地设备上的地点将包含在搜索结果中。 |
Place.PrivateVisibility | 仅对当前用户私有的地点包括在搜索结果中。 |
Place.PublicVisibility | 仅对公开的地点包括在搜索结果中。 |
方法文档
void cancel() |
立即取消正在进行的搜索操作并将模型状态设置为PlaceSearchModel.Ready。模型保留在操作开始之前的任何搜索结果。
如果没有正在进行的操作,调用cancel()没有任何效果。
string errorString() |
此只读属性保留最新地点搜索模型错误的文本表示形式。如果没有发生错误或模型被清除,则返回空字符串。
如果发生了没有相关文本表示的错误,也可能返回空字符串。
void nextPage() |
将模型更新为显示下一页的搜索结果。如果没有下一页,则此方法不执行任何操作。
void previousPage() |
将模型更新为显示上一页的搜索结果。如果没有上一页,则此方法不执行任何操作。
void reset() |
重置模型。所有搜索结果都会被清除,任何未完成的请求将被中止,任何可能发生的错误都会被清除。模型状态将设置为PlaceSearchModel.Null。
void update() |
根据提供的查询参数更新模型。该模型将包含与类型属性中指定的搜索参数相匹配的地点列表。通过设置诸如searchTerm、categories、searchArea和limit等属性来指定搜索条件。对这些属性的支持可能会有所不同,具体取决于plugin。然后update()
将设置的准则提交给plugin进行处理。
当模型正在更新时,模型的status将被设置为PlaceSearchModel.Loading
。如果模型成功更新,则status将被设置为PlaceSearchModel.Ready
;如果更新失败,则status将被设置为PlaceSearchModel.Error
,并且模型将被清除。
PlaceSearchModel { id: model plugin: backendPlugin searchArea: QtPositioning.circle(QtPositioning.coordinate(10, 10)) ... } MouseArea { ... onClicked: { model.searchTerm = "pizza"; model.categories = null; //not searching by any category model.searchArea.center.latitude = -27.5; model.searchArea.center.longitude = 153; model.update(); } }
void updateWith(int proposedSearchIndex) |
根据索引proposedSearchIndex的ProposedSearchResult更新模型。模型将填充与建议搜索相匹配的地点列表。模型状态将设置为PlaceSearchModel.Loading。如果模型成功更新,状态将设置为PlaceSearchModel.Ready。如果发生错误,状态将设置为PlaceSearchModel.Error,并且模型将被清除。
如果proposedSearchIndex不引用ProposedSearchResult,则此方法不执行任何操作。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献的版权属于各自的拥有者。本文档受Free Software Foundation发布的GNU自由文档许可版本1.3的条款约束。Qt及其相应的标志是芬兰及其它国家的The Qt Company Ltd.的商标。所有其他商标均属于其各自的拥有者。