Тип QML Place
Тип Place представляет местоположение, являющееся объектом интереса. Подробнее...
| Заявление об импорте: | import QtLocation 5.15 |
| С: | QtLocation 5.5 |
Свойства
- attribution : строка
- categories : список<Category>
- contactDetails : ContactDetails
- detailsFetched : bool
- editorialModel : EditorialModel
- extendedAttributes : ExtendedAttributes
- favorite : Place
- icon : Icon
- imageModel : ImageModel
- location : QtPositioning::Location
- name : строка
- place : QPlace
- placeId : строка
- plugin : Plugin
- primaryEmail : строка
- primaryFax : строка
- primaryPhone : строка
- primaryWebsite : строка
- ratings : Ratings
- reviewModel : ReviewModel
- status : перечисление
- supplier : Supplier
- visibility : перечисление
Методы
- void copyFrom(Place original)
- строка errorString()
- void getDetails()
- void initializeFavorite(Plugin destinationPlugin)
- void remove()
- void save()
Подробное описание
Тип Place представляет физическое местоположение с дополнительными метаданными, описывающими это местоположение. В отличие от типа Location, Address и coordinate, которые используются для описания местоположения. Основными свойствами места являются его название и местоположение.
Объекты Place обычно получаются из модели поиска и обычно имеют только свои основные свойства. Свойство detailsFetched можно использовать для проверки необходимости получения дополнительных значений свойств из Plugin. Это можно сделать, вызвав метод getDetails(). Прогресс операции извлечения данных можно отследить с помощью свойства status, которое будет установлено в Place.Fetching при извлечении данных.
Тип Place имеет много свойств, хранящих информацию о местоположении. Свойства contactDetails содержат информацию для связи с местом. Также доступны удобные свойства для получения основных телефона, факса, электронной почты и сайта.
Каждое место связано с нулем или более категориями. Категории обычно используются при поиске определенного типа места, например, ресторана или отеля. Некоторые места имеют объект ratings, который дает представление о качестве места.
Метаданные места предоставляются поставщиком, который может потребовать отображения сообщения attribution пользователю при просмотре подробностей места.
Места имеют связанный с ними значок, который можно использовать для представления места на карте или для украшения делегата в представлении.
Места могут иметь связанный с ними дополнительный контент. В настоящее время поддерживается богатый контент, включающий редакционные описания, отзывы и изображения. Он доступен как набор моделей для извлечения содержимого. Редакционные описания места доступны из свойства editorialModel. Отзывы о месте доступны из свойства reviewModel. Фотогалерею места можно получить с помощью свойства imageModel.
Места могут иметь дополнительные атрибуты, которые не охвачены формальным API. Свойство extendedAttributes предоставляет доступ к этим атрибутам. Тип доступных расширенных атрибутов зависит от каждого Plugin.
Место почти всегда связано с плагином. Свойство plugin должно быть установлено, прежде чем можно будет вызвать save(), remove() или getDetails(). Свойства reviewModel, imageModel и editorialModel действительны только при установке свойства plugin.
Сохранение места
Если Plugin это поддерживает, тип Place можно использовать для сохранения места. Сначала создайте новый Place и установите его свойства:
Place {
id: myPlace
plugin: myPlugin
name: "Brisbane Technology Park"
location: Location {
address: Address {
street: "53 Brandl Street"
city: "Eight Mile Plains"
postalCode: "4113"
country: "Australia"
}
coordinate {
latitude: -27.579646
longitude: 153.100308
}
}
visibility: Place.PrivateVisibility
} Затем вызовите метод save():
myPlace.save();
Свойство status изменится на Place.Saving, а затем на Place.Ready, если сохранение прошло успешно, или на Place.Error, если произошла ошибка.
Если свойство placeId установлено, бэкэнд обновит существующее место, в противном случае создаст новое место. При успехе свойство placeId будет обновлено идентификатором сохранённого места.
Ограничения
API мест в настоящее время разработан только для сохранения основных данных. Сохранение богатого контента, такого как изображения и отзывы, или данных, таких как поставщик и рейтинг, не является поддерживаемым случаем использования. Как правило, менеджер обычно игнорирует эти поля при сохранении и может вывести предупреждающее сообщение, если они заполнены.
API мест поддерживает сохранение только следующих основных данных:
- имя
- идентификатор места
- местоположение
- контактные данные
- значок
- категории (метки для описания места)
- область видимости
Возможно, поставщики поддерживают только подмножество этих данных. Для получения более подробной информации см. документацию по плагинам.
Сохранение свойств, таких как рейтинг, расширенные атрибуты, изображения, отзывы, редакционные статьи и поставщик, явным образом не поддерживается API мест.
Сохранение между плагинами
При сохранении мест между плагинами необходимо учитывать несколько моментов. Некоторые поля места, такие как идентификатор, категории и значки, являются плагин-специфичными сущностями. Например, категории в одном менеджере могут не распознаваться в другом. Поэтому попытка сохранить место напрямую из одного плагина в другой невозможна.
В целом рекомендуется, чтобы сохранение между плагинами обрабатывалось как сохранение избранных мест, как описано в разделе «Избранные». Однако существует другой подход, который заключается в создании нового места, установке его (целевого) плагина и использовании метода copyFrom() для копирования данных исходного места. Метод copyFrom() копирует только данные, поддерживаемые целевым плагином, плагин-специфические данные, такие как идентификатор места, не копируются. После завершения копирования место находится в состоянии, пригодном для сохранения.
Следующий фрагмент кода предоставляет пример сохранения места в другом плагине с помощью метода copyFrom:
var place = Qt.createQmlObject('import QtLocation 5.3; Place { }', parent);
place.plugin = destinationPlugin;
place.copyFrom(originalPlace);
place.save(); Удаление места
Чтобы удалить место, убедитесь, что существует объект Place с корректным свойством placeId, и вызовите его метод remove(). Свойство status изменится на Place.Removing, а затем на Place.Ready, если сохранение прошло успешно, или на Place.Error, если произошла ошибка.
Избранные
API мест поддерживает понятие избранных мест. Избранные места обычно реализуются с использованием двух плагинов: первый плагин обычно является только для чтения источником мест (исходный плагин), а второй плагин для чтения/записи (целевой плагин) используется для хранения мест из исходного плагина в качестве избранных.
У каждого места есть любимое свойство, которое должно содержать соответствующее место из плагина назначения (само место берётся из плагина происхождения). Поскольку доступны как исходное место, так и экземпляр «любимого», разработчик может выбрать, какие свойства отобразить пользователю. Например, у «любимого» может быть изменённое имя, которое следует отобразить вместо исходного имени.
Text { text: place.favorite ? place.favorite.name : place.name } Ниже показано, как сохранить новый экземпляр «любимого». Вызывается создание/инициализация экземпляра «любимого», а затем экземпляр сохраняется.
place.initializeFavorite(destinationPlugin); //if necessary customizations to the favorite can be made here. //... place.favorite.save();
Ниже показано удаление «любимого»:
place.favorite.remove();
...
//check successful removal of the favorite by monitoring its status.
//once that is done we can assign null to the favorite
place.favorite = null; У PlaceSearchModel есть свойство favoritesPlugin. Если свойство установлено, все найденные места во время поиска проверяются на наличие соответствующего места из favoritesPlugin. Если есть, свойство favorite места устанавливается, в противном случае свойство favorite остаётся null.
См. также PlaceSearchModel.
Документация свойств
attribution : string
Это свойство содержит строку атрибуции форматированного текста для места. Некоторые поставщики могут потребовать отображения атрибуции пользователю всякий раз, когда место отображается. Содержимое этого свойства должно отображаться пользователю, если оно не пустое.
Это свойство содержит список категорий, к которым принадлежит это место. Категории, которые могут быть назначены месту, зависят от каждого плагина.
contactDetails : ContactDetails
Это свойство содержит контактную информацию для этого места, например, номер телефона или URL веб-сайта. Это свойство — карта объектов ContactDetail.
detailsFetched : bool
Это свойство указывает, были ли получены подробные сведения о месте. Если это свойство ложно, подробные сведения о месте ещё не получены. Получение данных можно выполнить, вызвав метод getDetails().
См. также getDetails().
editorialModel : EditorialModel
Это свойство содержит модель, которую можно использовать для получения редакционных описаний места.
extendedAttributes : ExtendedAttributes
Это свойство содержит расширенные атрибуты места. Расширенные атрибуты — это дополнительная информация о месте, не покрытая свойствами места.
favorite : Place
Это свойство содержит экземпляр «любимого» места.
icon : Icon
Это свойство содержит графический значок, который можно использовать для представления места.
imageModel : ImageModel
Это свойство содержит модель, которую можно использовать для получения изображений места.
location : QtPositioning::Location
Это свойство содержит местоположение места, которое можно использовать для получения координат, адреса и ограничивающей рамки.
name : string
Это свойство содержит имя места, которое можно использовать для представления места.
place : QPlace
Подробную информацию о том, как использовать это свойство для взаимодействия между C++ и QML, см. в разделе «Взаимодействие между C++ и QML-кодом».
placeId : string
Это свойство содержит уникальный идентификатор места. Идентификатор места имеет смысл только для плагина, который его сгенерировал, и не передаётся между плагинами. Идентификатор места не гарантируется как универсально уникальный, но уникальный в пределах плагина, который его сгенерировал.
Если известен только идентификатор места, все остальные данные о месте можно получить из плагина.
place.plugin = myPlugin;
place.placeId = "known-place-id";
place.getDetails(); plugin : Plugin
Это свойство содержит плагин, который предоставил это место, которое можно использовать для получения дополнительной информации об услуге.
primaryEmail : string
Это свойство содержит основной адрес электронной почты места. Если для этого места не определён контактный элемент «email», это свойство будет пустой строкой. Оно эквивалентно
var primaryEmail;
if (place.contactDetails["email"].length > 0)
primaryEmail = place.contactDetails["email"][0].value; primaryFax : string
Это свойство содержит основной номер факса места. Если для этого места не определён контактный элемент «fax», это свойство будет пустой строкой. Оно эквивалентно
var primaryFax;
if (place.contactDetails["fax"].length > 0)
primaryFax = place.contactDetails["fax"][0].value; primaryPhone : string
Это свойство содержит основной номер телефона места. Если для этого места не определён контактный элемент «phone», это свойство будет пустой строкой. Оно эквивалентно:
var primaryPhone;
if (place.contactDetails["phone"].length > 0)
primaryPhone = place.contactDetails["phone"][0].value; primaryWebsite : string
Это свойство содержит основной URL веб-сайта места. Если для этого места не определён контактный элемент «website», это свойство будет пустой строкой. Оно эквивалентно
var primaryWebsite;
if (place.contactDetails["website"].length > 0)
primaryWebsite = place.contactDetails["website"][0].value; ratings : Ratings
Это свойство содержит оценки места. Рейтинги предоставляют представление о качестве места.
reviewModel : ReviewModel
Это свойство содержит модель, которую можно использовать для получения отзывов о месте.
status : enumeration
Это свойство содержит статус места. Он может быть одним из:
| Place.Ready | Во время последней операции не возникло ошибок, можно выполнить дополнительные операции с местом. |
| Place.Saving | Место в настоящее время сохраняется, никакие другие операции нельзя выполнять до завершения. |
| Place.Fetching | В настоящее время извлекаются данные о месте, никакие другие операции нельзя выполнять до завершения. |
| Place.Removing | Место в настоящее время удаляется, никакие другие операции нельзя выполнять до завершения. |
| Place.Error | Во время последней операции возникла ошибка, но можно выполнять дополнительные операции с местом. |
Статус места можно проверить, подключив свойство status к обработчику функций, а затем заставить обработчик функций обработать изменение статуса.
place.statusChanged.connect(statusChangedHandler);
...
function statusChangedHandler() {
if (statusChangedHandler.prevStatus === Place.Saving) {
switch (place.status) {
case Place.Ready:
console.log('Save successful');
break;
case Place.Error:
console.log('Save failed');
break;
default:
break;
}
}
statusChangedHandler.prevStatus = place.status;
} supplier : Supplier
Это свойство содержит поставщика данных о месте. Поставщик обычно является компанией или организацией, которая собрала данные о месте.
visibility : enumeration
Это свойство содержит видимость места. Оно может быть одним из:
| Place.UnspecifiedVisibility | Видимость места не указана, будет использована видимость по умолчанию для плагина. |
| Place.DeviceVisibility | Место ограничено текущим устройством. Место не будет передано с устройства. |
| Place.PrivateVisibility | Место приватное для текущего пользователя. Место может быть передано в онлайн-сервис, но всегда видно только текущему пользователю. |
| Place.PublicVisibility | Место общедоступное. |
Обратите внимание, что видимость не влияет на то, как место отображается в пользовательском интерфейсе приложения на устройстве. Вместо этого она определяет семантику совместного использования места.
Документация методов
void copyFrom(Place original)
Копирует данные из места original в это место. Копируются только данные, поддерживаемые плагином этого места, и такие данные, как идентификатор места, специфичные для плагина, не копируются.
string errorString()
Возвращает строковое описание ошибки последней операции. Если последняя операция завершилась успешно, строка пустая.
void getDetails()
Этот метод запускает получение подробных данных о месте.
Свойство status изменится на Place.Fetching во время выполнения запроса. При успехе свойства объекта будут обновлены, status будет установлено в Place.Ready, а detailsFetched — в true. При ошибке status будет установлено в Place.Error. Метод errorString() может быть использован для получения подробностей об ошибке.
void initializeFavorite(Plugin destinationPlugin)
Создаёт экземпляр избранного места, который будет сохранён в плагин назначения destinationPlugin. Этот метод ничего не делает, если свойство избранного места не null.
void remove()
Этот метод выполняет операцию удаления места.
Свойство status изменится на Place.Removing во время выполнения операции сохранения. При успехе status будет установлено в Place.Ready. При ошибке status будет установлено в Place.Error. Метод errorString() может быть использован для получения подробностей об ошибке.
void save()
Этот метод выполняет операцию сохранения места.
Свойство status изменится на Place.Saving во время выполнения операции сохранения. При успехе status будет установлено в Place.Ready. При ошибке status будет установлено в Place.Error. Метод errorString() может быть использован для получения подробностей об ошибке.
Если свойство placeId было ранее пустым, оно будет автоматически присвоено действительное значение во время успешной операции сохранения.
Обратите внимание, что PlaceSearchModel будет вызывать Place::getDetails для любого места, при обнаружении обновления. Следствием этого является то, что всякий раз, когда место из PlaceSearchModel успешно сохраняется, за этим будет следовать запрос подробностей о месте, что приведёт к последовательности изменений состояния Saving, Ready, Fetching, Ready.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtlocation-place.html