MapQuickItem QML 类型

MapQuickItem 类型用于在地图上显示任意 Qt Quick 对象。 更多...

导入声明import QtLocation 6.7
QtLocation 5.5

属性

详细描述

MapQuickItem 类型用于在一个指定位置和大小的地图上放置任意 Qt Quick 对象。与在地图上悬浮对象相比,MapQuickItem 会随地图的平移(和可选的缩放)而移动,就像它在地图表面一样。

sourceItem 属性包含了要绘制的 Qt Quick 对象,可以是任何可视类型。

定位和尺寸

MapQuickItem 在地图上的定位由两个属性控制:coordinateanchorPoint。如果只设置了 coordinate,则指定了放置对象的经纬度坐标。设置的坐标将在屏幕上显示时与包含对象的左上角对齐。

anchorPoint 属性提供了一种方法,通过设置像素偏移量,将坐标与其他对象部分对齐,而不是只与左上角对齐。简单来说,可以将 anchorPoint 在对象本身上给定的点视为显示时与给定 coordinate 对齐的点。

除了可以锚定到地图上,MapQuickItem 还可以选择跟踪地图的比例,并在地图放大或缩小时光标变化大小。这种行为由 zoomLevel 属性控制。如果未设置 zoomLevel,则默认行为是在“屏幕上”而不是“地图上”绘制项,使其尺寸不受地图缩放级别的影响。

性能

MapQuickItem 的性能通常与单独的 Qt Quick 项相当。增加的开销包括原始项的转换(可能还包括缩放)以及从经纬度到屏幕位置的转换。

限制

注意:由于实现细节,放置在 MapQuickItem 中的项将具有一个不是 MapQuickItem 的 parent 项。请通过其 id 来引用 MapQuickItem,并避免在 sourceItem 中使用 anchor

使用示例

以下代码片段显示了一个包含 Image 对象的 MapQuickItem,用于在地图上显示标记。此策略用于显示 MapViewer 示例中的地图标记。

MapQuickItem {
    id: marker
    anchorPoint.x: image.width/4
    anchorPoint.y: image.height

    HoverHandler {
        id: hoverHandler
    }
    TapHandler {
        id: tapHandler
        acceptedButtons: Qt.RightButton
        gesturePolicy: TapHandler.WithinBounds
        onTapped: {
            mapview.currentMarker = -1
            for (var i = 0; i< mapview.markers.length; i++){
                if (marker == mapview.markers[i]){
                    mapview.currentMarker = i
                    break
                }
            }
            mapview.showMarkerMenu(marker.coordinate)
        }
    }
    DragHandler {
        id: dragHandler
        grabPermissions: PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType
    }

    sourceItem: Image {
        id: image
    }
}

属性文档

anchorPoint : QPointF

此属性确定在 sourceItem 上哪个点将与地图上的坐标对齐。


autoFadeIn : bool

该属性表示,当从非常低的缩放级别开始放大地图时,项是否自动淡入。默认情况下为 true。将此属性设置为 false 将使地图项始终具有用 QtQuick::Item::opacity 属性指定的不透明度,默认值为 1.0。


coordinate : coordinate

此属性持有 MapQuickItem 的锚点坐标。在地图上绘制时,由 anchorPoint 指定的 sourceItem 上的点与该坐标保持对齐。

在下面的图像中,有 3 个 MapQuickItem,除了它们的 anchorPoint 属性值不同。每个 anchorPoint 的值都写在项的上方。


sourceItem : object

此属性持有将在地图上绘制的源项。


zoomLevel : real

此属性控制 MapQuickItem 内容的缩放行为。特别是,通过设置此属性,可以选择在屏幕上绘制的对象(以屏幕像素为单位确定大小)和在地图表面上绘制的对象(大小随地图缩放级别而变化)。

此属性的默认值为0.0,表示在该屏幕表面上绘制对象。如果将其设置为其他值,则对象将在地图表面上绘制。该值(如果不为零)指定在1:1比例(即对象像素与屏幕像素相同)下对象可见的缩放级别。在比此级别低的缩放级别下,对象将显得更小,而在更高的缩放级别下,对象将显得更大。这与将此属性设置为0的情况形成对比,此时对象在所有缩放级别上在屏幕上都将保持相同的尺寸。


© 2024 The Qt Company Ltd. 本文档中包含的贡献的版权归各自的所有者。本提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3授予权利的。Qt及其相关徽标是芬兰及全球其他国家和地区The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。