Тип QML PlaceSearchModel
Обеспечивает доступ к результатам поиска мест. Подробнее...
| Заявление об импорте: | import QtLocation 5.11 |
| С момента: | QtLocation 5.5 |
Свойства
- categories : список<Category>
- count : int
- favoritesMatchParameters : VariantMap
- favoritesPlugin : Plugin
- limit : int
- nextPagesAvailable : bool
- plugin : Plugin
- previousPagesAvailable : bool
- recommendationId : строка
- relevanceHint : перечисление
- searchArea : значение
- searchTerm : строка
- status : перечисление
- visibilityScope : перечисление
Методы
- void cancel()
- Значение data(int index, строка role)
- строка errorString()
- void nextPage()
- void previousPage()
- void reset()
- void update()
- void updateWith(int 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], и предполагается, что показана первая страница и установлен лимит 3, тогда возвращаются a,b,c. Метод nextPage() вернет d,e. Свойства nextPagesAvailable и previousPagesAvailable могут использоваться для проверки наличия дополнительных страниц. В настоящее время API не поддерживает способ получения общего количества элементов, доступных из бэкенда. Обратите внимание, что поддержка nextPage(), previousPage() и limit может варьироваться в зависимости от plugin.
См. также CategoryModel и QPlaceManager.
Документация по свойствам
Это свойство содержит список категорий, которые будут использоваться при поиске. Результаты поиска будут возвращены для мест, соответствующих хотя бы одной из категорий.
count : int
Это свойство содержит количество результатов, имеющихся у модели.
Обратите внимание, что оно не относится к общему числу результатов поиска, доступных в бэкенде. Общее количество результатов поиска в настоящее время не поддерживается API.
favoritesMatchParameters : VariantMap
Это свойство содержит набор параметров, используемых для указания того, как места результатов поиска сопоставляются с избранными в favoritesPlugin.
По умолчанию параметр map пустой и подразумевает, что плагин избранных сопоставляет по альтернативным идентификаторам. Обычно разработчику приложения не нужно устанавливать это свойство.
В случаях, когда плагин избранных не поддерживает сопоставление по альтернативным идентификаторам, следует обратиться к документации плагина для уточнения, какие пары «ключ-значение» установить.
favoritesPlugin : Plugin
Это свойство содержит Plugin, который будет использоваться для поиска избранных. Любые места из поиска, которые могут быть сопоставлены с плагином избранных, будут иметь свойство favorite, установленное в соответствующее Place из плагина избранных.
Если favoritesPlugin не задан, свойство favorite мест в результатах всегда будет null.
См. также Избранное.
limit : int
Это свойство хранит ограничение на количество элементов, которые будут возвращены.
nextPagesAvailable : bool
Это свойство указывает, доступны ли одна или несколько дополнительных страниц результатов поиска.
См. также nextPage().
plugin : Plugin
Это свойство хранит Плагин, который будет использоваться для выполнения поиска.
previousPagesAvailable : bool
Это свойство указывает, доступны ли одна или несколько предыдущих страниц результатов поиска.
См. также previousPage().
recommendationId : string
Это свойство хранит placeId, который используется для поиска рекомендаций по похожим местам.
relevanceHint : перечисление
Это свойство хранит подсказку релевантности, используемую в запросе поиска. Подсказка предоставляется поставщику для помощи, но не диктует ранжирование результатов. Например, подсказка по расстоянию может присваивать местам, расположенным ближе к пользователю, более высокую оценку, но это не обязательно означает, что результаты будут строго упорядочены по расстоянию. Поставщик может вообще проигнорировать подсказку.
| SearchResultModel.UnspecifiedHint | Поставщику не предоставляется никакая подсказка релевантности. |
| SearchResultModel.DistanceHint | Расстояние места от текущего местоположения пользователя важно для пользователя. Эта подсказка имеет смысл только при использовании круговой области поиска. |
| SearchResultModel.LexicalPlaceNameHint | Лексическое упорядочение названий мест (в алфавитном порядке) имеет значение для пользователя. Эта подсказка полезна для поставщиков, использующих локальный хранилище данных. |
searchArea : variant
Это свойство хранит область поиска. Результаты поиска, возвращаемые моделью, будут находиться в пределах области поиска.
Если это свойство установлено в geocircle, его свойство radius может быть не задано, в этом случае Плагин выберет подходящий радиус для поиска.
Поддержка указания области поиска может варьироваться в зависимости от реализации бэкенда плагина. Например, некоторые могут поддерживать только центр поиска, а другие только геопрямоугольники.
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() не оказывает никакого влияния.
Variant data(int index, string role)
Возвращает данные для заданного role в указанной строке index.
string errorString()
Это свойство только для чтения, содержащее текстовое представление последней ошибки модели поиска мест. Если ошибка не произошла или модель была очищена, возвращается пустая строка.
Пустая строка также может быть возвращена, если произошла ошибка, для которой нет соответствующего текстового представления.
void nextPage()
Обновляет модель для отображения следующей страницы результатов поиска. Если следующей страницы нет, этот метод ничего не делает.
void previousPage()
Обновляет модель для отображения предыдущей страницы результатов поиска. Если предыдущей страницы нет, этот метод ничего не делает.
void reset()
Сбрасывает модель. Все результаты поиска очищаются, любые активные запросы прерываются, и возможные ошибки очищаются. Статус модели будет установлен в PlaceSearchModel.Null.
void update()
Обновляет модель на основе предоставленных параметров запроса. Модель будет заполнена списком мест, соответствующих параметрам поиска, заданным свойствами типа. Критерии поиска задаются путем установки свойств, таких как searchTerm, категории, searchArea и limit. Поддержка этих свойств может варьироваться в зависимости от плагина. update() затем отправляет набор критериев плагину для обработки.
Пока модель обновляется, статус модели установлен в PlaceSearchModel.Loading. Если модель успешно обновлена, статус устанавливается в PlaceSearchModel.Ready, в то время как при неудачном завершении статус устанавливается в 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)
Обновляет модель на основе 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/archives/qt-5.11/qml-qtlocation-placesearchmodel.html