Тип QML Place
Тип Place представляет местоположение, которое является точкой интереса. Подробнее...
| Заявление импорта: | import QtLocation 5.3 |
| С момента: | Qt Location 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.
Place почти всегда связан с 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 остаётся нулевым.
См. также PlaceSearchModel.
Документация по свойствам
attribution : строка
Это свойство содержит строку атрибуции места в формате rich text. Некоторые поставщики могут потребовать, чтобы атрибуция отображалась пользователю всякий раз, когда отображается место. Содержимое этого свойства должно отображаться пользователю, если оно не пусто.
categories : список<Category>
Это свойство содержит список категорий, к которым принадлежит это место. Категории, которые могут быть назначены месту, специфичны для каждого плагина.
contactDetails : ContactDetails
Это свойство содержит контактную информацию для этого места, например, номер телефона или адрес сайта. Это свойство является картой объектов ContactDetail.
detailsFetched : логическое
Это свойство указывает, были ли получены данные о месте. Если это свойство ложно, данные о месте ещё не получены. Получение данных можно осуществить, вызвав метод getDetails().
См. также getDetails().
editorialModel : EditorialModel
Это свойство содержит модель, которая может быть использована для получения редакторских описаний места.
extendedAttributes : ExtendedAttributes
Это свойство содержит расширенные атрибуты места. Расширенные атрибуты — это дополнительная информация о месте, не охваченная свойствами места.
favorite : Place
Это свойство содержит экземпляр избранного места.
icon : Icon
Это свойство содержит графический значок, который можно использовать для представления места.
imageModel : ImageModel
Это свойство содержит модель, которая может быть использована для получения изображений места.
location : QtPositioning::Location
Это свойство содержит местоположение места, которое можно использовать для получения координат, адреса и ограничивающей рамки.
name : строка
Это свойство содержит имя места, которое можно использовать для представления места.
place : QPlace
Подробнее о том, как использовать это свойство для взаимодействия между C++ и QML, см. "Взаимодействие между C++ и QML-кодом".
placeId : строка
Это свойство содержит уникальный идентификатор места. Идентификатор места имеет смысл только для плагина, который его сгенерировал, и не передаётся между плагинами. Идентификатор места не гарантируется как универсально уникальный, но уникален внутри плагина, который его сгенерировал.
Если известен только идентификатор места, все остальные данные о месте можно получить из плагина.
place.plugin = myPlugin;
place.placeId = "known-place-id";
place.getDetails(); plugin : Plugin
Это свойство содержит плагин, который предоставил это место, которое можно использовать для получения дополнительной информации о службе.
primaryEmail : строка
Это свойство содержит основной адрес электронной почты места. Если для этого места не определён контактный detail "email", это свойство будет пустой строкой. Эквивалентно
var primaryEmail;
if (place.contactDetails["email"].length > 0)
primaryEmail = place.contactDetails["email"][0].value; primaryFax : строка
Это свойство содержит основной номер факса места. Если для этого места не определён контактный detail "fax", это свойство будет пустой строкой. Эквивалентно
var primaryFax;
if (place.contactDetails["fax"].length > 0)
primaryFax = place.contactDetails["fax"][0].value; primaryPhone : строка
Это свойство содержит основной номер телефона места. Если для этого места не определён контактный detail "phone", это свойство будет пустой строкой. Эквивалентно:
var primaryPhone;
if (place.contactDetails["phone"].length > 0)
primaryPhone = place.contactDetails["phone"][0].value; primaryWebsite : строка
Это свойство содержит основной адрес веб-сайта места. Если для этого места не определён контактный detail "website", это свойство будет пустой строкой. Эквивалентно
var primaryWebsite;
if (place.contactDetails["website"].length > 0)
primaryWebsite = place.contactDetails["website"][0].value; ratings : Ratings
Это свойство содержит оценки места. Рейтинги дают представление о качестве места.
reviewModel : ReviewModel
Это свойство содержит модель, которая может быть использована для получения отзывов о месте.
status : перечисление
Это свойство содержит статус места. Он может быть одним из:
| 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 : перечисление
Это свойство содержит видимость места. Оно может быть одним из:
| Place.UnspecifiedVisibility | Видимость места не определена, будет использоваться значение по умолчанию видимости плагина. |
| Place.DeviceVisibility | Место ограничено текущим устройством. Место не будет перенесено с устройства. |
| Place.PrivateVisibility | Место является личным для текущего пользователя. Место может быть перенесено на онлайн-сервис, но оно всегда будет видно только текущему пользователю. |
| Place.PublicVisibility | Место является публичным. |
Обратите внимание, что видимость не влияет на то, как место отображается в пользовательском интерфейсе приложения на устройстве. Вместо этого она определяет семантику совместного использования места.
Документация по методам
пусто copyFrom(Place original)
Копирует данные из места original в это место. Копируются только данные, поддерживаемые плагином этого места, а такие данные, как идентификатор места, специфичные для плагина, не копируются.
строка errorString()
Возвращает строку описания ошибки последней операции. Если последняя операция выполнена успешно, строка пустая.
пусто getDetails()
Этот метод начинает получение данных о месте.
Свойство status изменится на Place.Fetching во время извлечения. При успешном завершении свойства объекта будут обновлены, status будет установлено в Place.Ready, а detailsFetched — в true. При ошибке status будет установлено в Place.Error. Метод errorString() можно использовать для получения подробностей об ошибке.
void initializeFavorite(Plugin destinationPlugin)
Создает экземпляр избранного места, которое должно быть сохранено в плагине destination. Этот метод ничего не делает, если свойство favorite не равно 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/archives/qt-5.6/qml-qtlocation-place.html