位置QML类型

位置类型表示一个感兴趣的位置。 更多信息...

导入语句import QtLocation 6.7
QtLocation 5.5以来

属性

方法

详细描述

地点类型表示一个带有额外元数据的物理位置,描述该位置。与描述位置所在地的 位置地址坐标 类型相对比,地点的基本属性是其 名称位置

地点对象通常来源于搜索模型,通常只会设置其基本属性。可以使用 detailsFetched 属性来测试是否需要从 插件 获取更多的属性值。可以通过调用 getDetails() 方法来实现。可以通过 status 属性监视获取操作的进度,当详细信息正在获取时,该属性将被设置为 Place.Fetching。

地点类型有许多属性,包含有关位置的信息。如何联系地点的详细信息可以通过 contactDetails 属性获得。还有方便的属性来获取主要 电话传真电子邮件网站

每个地点都被分配了零个或多个 类别。类别通常在搜索特定类型的地点时使用,比如餐厅或酒店。一些地点有一个 评分 对象,对地点的质量给出了指示。

地点元数据由一个 供应商 提供,该供应商可能要求在查看地点详细信息时向用户显示 归属 消息。

地点有一个相关的 图标,可以用来在地图上表示地点或用于装饰视图中的委托。

地点可能附加有额外的丰富内容。当前支持的丰富内容包含编辑说明、评论和图片。这些以一组模型的形式暴露,用于检索内容。地点的编辑说明可以通过 editorialModel 属性获得。地点的评论可以通过 reviewModel 属性获得。地点图片的画廊可以通过 imageModel 属性访问。

地点可能有未在正式 API 中涵盖的附加属性。《a href="qml-qtlocation-place.html#extendedAttributes-prop" translate="no">extendedAttributes 属性提供了对这些属性的访问。可用的扩展属性类型适用于每个 插件

地点几乎总是与一个 插件 相关联。必须在调用 save()、remove() 或 getDetails() 之前设置 plugin 属性。只有当设置 plugin 属性时,reviewModelimageModeleditorialModel 才是有效的。

保存地点

如果 插件 支持它,可以使用地点类型来保存地点。首先创建一个新的地点并设置其属性

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();

属性状态将在保存成功时变为Place.Saving,然后变为Place.Ready;如果在保存过程中发生错误,将变为Place.Error。

如果设置placeId属性,后端将更新现有位置,否则将创建一个新位置。如果保存成功,则placeId属性将更新为新保存位置的唯一标识符。

注意事项

当前的地点API只设计为保存核心细节。保存像图像和评论这样的丰富内容或像供应商和评分这样的细节不是受支持的用例。通常,在保存时,管理员通常会忽略这些字段,如果这些字段被填充,可能会显示警告消息。

地点API仅支持保存以下核心细节

  • 名称
  • 地点ID
  • 位置
  • 联系信息
  • 图标
  • 类别(用于描述地点的类似标签的名称)
  • 可见范围

可能的情况是,提供商可能只支持这些细节的一个子集。有关更多详细信息,请参阅插件文档

地点API明确不支持保存诸如评分、扩展属性、图像、评论、编辑和供应商之类的属性。

插件间的保存

在插件间保存地点时,有一些需要注意的事项。地点的一些字段,如ID、类别和图标是特定于插件实体。例如,一个管理员的类别可能不会被另一个管理者识别。因此,直接从一个插件保存到另一个插件是不可能的。

通常建议将插件间的保存处理为保存收藏,如“收藏”部分中所述。但是,还有另一种方法,即创建一个新的地点,设置其(目标)插件,然后使用copyFrom()方法来复制原始地点的细节。使用copyFrom()方法仅复制目标插件支持的文件,插件特定的数据(如地点标识符)不会复制。一旦复制完成,该地点就处于适合保存的状态。

以下代码片段提供了使用copyFrom方法将地点保存到不同插件示例

var place = Qt.createQmlObject('import QtLocation; Place { }', parent);
place.plugin = destinationPlugin;
place.copyFrom(originalPlace);
place.save();

删除地点

要删除地点,请确保存在一个具有有效placeId属性的地点对象,并调用其remove()方法。如果保存成功,状态状态将变为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》具有一个收藏插件属性。如果设置了该属性,在搜索过程中找到的任何地点都会与收藏插件进行比较,以查看是否存在对应的收藏地点。如果是,则设置地点的收藏属性,否则收藏属性保持为null。

另请参阅 PlaceSearchModel

属性文档

attribution : string

此属性包含地点的富文本归属字符串。某些提供商可能需要将在显示地点时将归属信息显示给用户。如果该属性不为空,则应向用户显示其内容。


categories : list<Category> [只读]

此属性包含地点所属的类别列表。可分配给地点的类别针对每个插件而言是特定的。


contactDetails : ContactDetails [只读]

此属性包含此地点的联系方式,例如电话号码或网站URL。此属性是contactDetail对象的映射。


detailsFetched : bool [只读]

此属性表示地点详情是否已检索。如果此属性为false,则尚未检索地点详情。可以通过调用getDetails()方法来获取详情。

另请参阅 getDetails


editorialModel : EditorialModel [只读]

此属性包含用于检索地点编辑描述的模型。


extendedAttributes : ExtendedAttributes [只读]

此属性包含地点的扩展属性。扩展属性是关于地点的额外信息,不包括在地点属性中。


favorite : Place

此属性包含地点的收藏实例。


icon : Icon

此属性包含了一个可用来表示地点的图形图标。


imageModel : ImageModel [只读]

此属性包含了一个可用来检索地点图片的模型。


此属性包含可用于检索坐标、地址和边界框的地点位置。


name : string

此属性包含可用于表示地点的地点名称。


placeId : string

此属性包含地点的唯一标识符。地点标识符仅对生成它的插件有意义,并且不能在插件之间进行转移。地点标识符不保证是全球唯一的,但在生成它的插件内部是唯一的。

如果只知道地点标识符,的所有其他地点数据都可以从插件中获取。

    place.plugin = myPlugin;
    place.placeId = "known-place-id";
    place.getDetails();

plugin : 插件

该属性保存提供该地点的插件,可以用来检索关于服务的更多信息。


primaryEmail : 字符串 [只读]

该属性保存地点的主要电子邮件地址。如果没有为该地点定义“电子邮件”联系信息,则该属性将为空字符串。它与以下内容等效:

    var primaryEmail;
    if (place.contactDetails["email"].length > 0)
        primaryEmail = place.contactDetails["email"][0].value;

primaryFax : 字符串 [只读]

该属性保存地点的主要传真号码。如果没有为该地点定义“传真”联系信息,则该属性将为空字符串。它与以下内容等效:

    var primaryFax;
    if (place.contactDetails["fax"].length > 0)
        primaryFax = place.contactDetails["fax"][0].value;

primaryPhone : 字符串 [只读]

该属性保存地点的主要电话号码。如果没有为该地点定义“电话”联系信息,则该属性将为空字符串。它与以下内容等效:

    var primaryPhone;
    if (place.contactDetails["phone"].length > 0)
        primaryPhone = place.contactDetails["phone"][0].value;

primaryWebsite : 字符串 [只读]

该属性保存地点的主要网址。如果没有为该地点定义“网站”联系信息,则该属性将为空字符串。它与以下内容等效:

    var primaryWebsite;
    if (place.contactDetails["website"].length > 0)
        primaryWebsite = place.contactDetails["website"][0].value;

ratings : 评分

该属性保存地点的评分。评分提供了地点质量的一个指示。


reviewModel : ReviewModel [只读]

该属性保存可以用来检索关于地点的评论的模型。


status : 枚举 [只读]

该属性保存地点的状态。它可以是以下之一:

Place.Ready上一次操作中未发生错误,可以继续在地点上执行其他操作。
Place.Saving地点目前正被保存,在完成之前不能执行其他操作。
Place.Fetching地点详细信息目前正在被检索,在完成之前不能执行其他操作。
Place.Removing地点目前正在被删除,在完成之前不能执行其他操作。
Place.Error上一次操作中发生了错误,但可以继续在地点上执行其他操作。

可以通过将状态属性连接到处理程序函数并让处理程序函数处理状态的变化来检查地点的状态。

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 : 供应商

该属性保存地点数据的供应商。供应商通常是收集有关地点数据的企业或组织。


visibility : 枚举

该属性保存地点的可见性。它可以有以下之一:

Place.UnspecifiedVisibility地点的可见性未指定,将使用插件的默认可见性。
Place.DeviceVisibility地点仅限于当前设备。该地点将不会转移到设备以外。
Place.PrivateVisibility地点仅为当前用户私有。该地点可以传输到在线服务,但只对当前用户可见。
Place.PublicVisibility地点是公开的。

请注意,可见性不影响地方在设备应用的用户界面中的显示方式。相反,它定义了地方的分发语义。


方法文档

void copyFrom(Place 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 的地方时,都会跟随一个地方详情的检索,导致一系列状态改变,如 SavingReadyFetchingReady


© 2024 Qt 公司有限公司。在此包含的文档贡献的版权归其各自的拥有者。所提供的文档根据已被自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt及其相关标志是全球芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。