Тип QML PlaceSearchModel
Обеспечивает доступ к результатам поиска мест. Подробнее...
| Заявление об импорте: | import QtLocation 5.14 |
| С момента: | QtLocation 5.5 |
Свойства
- categories : список<Категория>
- count : int
- favoritesMatchParameters : VariantMap
- favoritesPlugin : Плагин
- incremental : bool
- limit : int
- nextPagesAvailable : bool
- plugin : Плагин
- previousPagesAvailable : bool
- recommendationId : строка
- relevanceHint : перечисление
- searchArea : вариант
- searchTerm : строка
- status : перечисление
- visibilityScope : перечисление
Методы
- void cancel()
- Вариант data(index, строка role)
- строка errorString()
- void nextPage()
- void previousPage()
- void reset()
- void update()
- void updateWith(proposedSearchIndex)
Подробное описание
PlaceSearchModel предоставляет модель результатов поиска мест в рамках searchArea. Свойства searchTerm и categories можно установить для ограничения результатов поиска местами, соответствующими этим критериям.
PlaceSearchModel возвращает как спонсируемые, так и органические результаты поиска. У спонсируемых результатов поиска будет установлено значение роли sponsored в true.
Модель возвращает данные для следующих ролей:
| Роль | Тип | Описание |
|---|---|---|
| type | перечисление | Тип результата поиска. |
| title | строка | Строка, описывающая результат поиска. |
| icon | PlaceIcon | Значок, представляющий результат поиска. |
| distance | вещественное | Действительно только когда роль type равна PlaceResult, расстояние до места от центра searchArea. Если searchArea не указан, расстояние равно NaN. |
| place | Place | Действительно только когда роль type равна PlaceResult, объект, представляющий место. |
| sponsored | bool | Действительно только когда роль type равна PlaceResult, true, если результат поиска является спонсируемым. |
Типы результатов поиска
Роль type может принимать следующие значения:
| PlaceSearchModel.UnknownSearchResult | Содержание результата поиска неизвестно. |
| PlaceSearchModel.PlaceResult | Результат поиска содержит место. |
| PlaceSearchModel.ProposedSearchResult | Результат поиска содержит предложенный поиск, который может быть релевантным. |
Иногда полезно использовать Loader для создания делегата, который будет выбирать различные Component в зависимости от типа результата поиска.
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 2.0
import QtPositioning 5.5
import QtLocation 5.6
PlaceSearchModel {
id: searchModel
plugin: myPlugin
searchTerm: "pizza"
searchArea: QtPositioning.circle(startCoordinate);
Component.onCompleted: update()
} Пейджинг
API PlaceSearchModel имеет ограниченную поддержку пейджинга. Функции nextPage() и previousPage(), а также свойство limit, могут использоваться для доступа к результатам поиска, разделенным на страницы. Когда свойство limit установлено, страница результатов поиска содержит не более limit записей (типа результата поиска места). Например, если бэкэнд содержит 5 результатов поиска в целом [a, b, c, d, e], и предполагается, что показана первая страница, и установлено значение limit 3, то возвращаются a, b, c. nextPage() вернет d, e. Свойства nextPagesAvailable и previousPagesAvailable могут использоваться для проверки наличия других страниц. В настоящее время API не поддерживает получение общего количества элементов, доступных из бэкэнда. Обратите внимание, что поддержка nextPage(), previousPage() и limit может различаться в зависимости от plugin.
См. также CategoryModel и QPlaceManager.
Документация по свойствам
categories : список<Категория>
Это свойство содержит список категорий, которые будут использоваться при поиске. Возвращаемые результаты поиска будут относиться к местам, соответствующим хотя бы одной из категорий.
count : int
Это свойство содержит количество результатов.
Обратите внимание, что оно не относится к общему количеству результатов поиска, доступных в бэкэнде. Общее количество результатов поиска в настоящее время не поддерживается API.
favoritesMatchParameters : VariantMap
Это свойство содержит набор параметров, используемых для указания того, как места результатов поиска сопоставляются с избранными в favoritesPlugin.
По умолчанию карта параметров пустая, что подразумевает, что плагин избранных сопоставляет по альтернативным идентификаторам. Обычно разработчику приложения не нужно устанавливать это свойство.
В случаях, когда плагин избранных не поддерживает сопоставление по альтернативным идентификаторам, следует обратиться к документации плагина, чтобы точно узнать, какие пары «ключ-значение» установить.
favoritesPlugin : Плагин
Это свойство содержит Плагин, который будет использоваться для поиска избранных. Все места из поиска, которые могут быть перекрестно сопоставлены или сопоставлены в favoritesPlugin, будут иметь свойство favorite, установленное в соответствующем Place из favoritesPlugin.
Если favoritesPlugin не установлен, свойство favorite мест в результатах всегда будет null.
См. также Избранное.
incremental : bool
Это свойство управляет тем, как постраничная навигация повлияет на PlaceSearchModel. Если значение истинно, вызов previousPage или nextPage не сбросит модель, а вместо этого новые результаты будут добавлены к модели. По умолчанию значение ложно.
Это свойство было добавлено в QtLocation 5.12.
limit : int
Это свойство содержит ограничение на количество возвращаемых элементов.
nextPagesAvailable : bool
Это свойство указывает, доступны ли одна или несколько дополнительных страниц результатов поиска.
См. также nextPage().
plugin : Plugin
Это свойство содержит Plugin, который будет использоваться для выполнения поиска.
previousPagesAvailable : bool
Это свойство указывает, доступны ли одна или несколько предыдущих страниц результатов поиска.
См. также previousPage().
recommendationId : string
Это свойство содержит placeId, который будет использоваться для поиска рекомендаций по похожим местам.
relevanceHint : enumeration
Это свойство содержит подсказку релевантности, используемую в запросе поиска. Подсказка предоставляется поставщику для помощи, но не для диктовки ранжирования результатов. Например, подсказка по расстоянию может присвоить местам, которые ближе к текущему местоположению пользователя, более высокий рейтинг, но это не обязательно означает, что результаты будут строго упорядочены по расстоянию. Поставщик может вообще проигнорировать подсказку.
| SearchResultModel.UnspecifiedHint | Поставщику не предоставляется подсказка релевантности. |
| SearchResultModel.DistanceHint | Расстояние места от текущего местоположения пользователя важно для пользователя. Эта подсказка имеет смысл только при использовании круговой области поиска. |
| SearchResultModel.LexicalPlaceNameHint | Лексическая сортировка названий мест (в алфавитном порядке) важна для пользователя. Эта подсказка полезна для поставщиков, основанных на локальном хранилище данных. |
searchArea : variant
Это свойство содержит область поиска. Результаты поиска, возвращаемые моделью, будут находиться в области поиска.
Если это свойство установлено в geocircle, его свойство radius может быть не задано, в этом случае Plugin выберет подходящий радиус для поиска.
Поддержка указания области поиска может различаться в зависимости от реализации бэкенда plugin. Например, некоторые могут поддерживать только центр поиска, в то время как другие могут поддерживать только геопрямоугольники.
searchTerm : string
Это свойство содержит поисковый запрос, используемый в запросе. Поисковый запрос — это текстовая строка произвольной формы.
status : enum
Это свойство содержит статус модели. Оно может быть одним из:
| PlaceSearchModel.Null | Запрос поиска не выполнялся. Модель пуста. |
| PlaceSearchModel.Ready | Запрос поиска завершен, и результаты доступны. |
| PlaceSearchModel.Loading | В настоящее время выполняется запрос поиска. |
| PlaceSearchModel.Error | При выполнении предыдущего запроса поиска произошла ошибка. |
visibilityScope : enum
Это свойство содержит область видимости мест для поиска. В результатах поиска будут возвращаться только места с указанной видимостью.
Область видимости может быть одной из:
| Place.UnspecifiedVisibility | Явно не указана область видимости; места с любой видимостью могут быть частью результатов поиска. |
| Place.DeviceVisibility | В результатах поиска будут только места, хранящиеся на локальном устройстве. |
| Place.PrivateVisibility | В результатах поиска будут только места, которые являются частными для текущего пользователя. |
| Place.PublicVisibility | В результатах поиска будут только общедоступные места. |
Документация по методам
void cancel()
Немедленно отменяет текущую операцию поиска и устанавливает статус модели в PlaceSearchModel.Ready. Модель сохраняет любые результаты поиска, которые были у нее до начала операции.
Если операция не выполняется, вызов cancel() не оказывает никакого эффекта.
Variant data(index, string role)
Возвращает данные для заданного role в указанной строке index.
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(proposedSearchIndex)
Обновляет модель на основе ProposedSearchResult с индексом proposedSearchIndex. Модель будет заполнена списком мест, соответствующих предложенному поиску. Статус модели будет установлен в PlaceSearchModel.Loading. Если модель успешно обновлена, статус будет установлен в PlaceSearchModel.Ready. Если произошла ошибка, статус будет установлен в PlaceSearchModel.Error, и модель будет очищена.
Если proposedSearchIndex не ссылается на ProposedSearchResult, этот метод ничего не делает.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtlocation-placesearchmodel.html