本页内容

MapQuickItem QML Type

MapQuickItem 类型可在地图上显示任意一个Qt Quick 对象。更多内容...

Import Statement: import QtLocation 6.12
Since: QtLocation 5.5

属性

详细说明

MapQuickItem 类型用于将任意Qt Quick 对象以指定的位置和大小放置在地图上。与将项目悬浮在地图上方相比,MapQuickItem 会跟随地图的平移(以及可选的缩放)操作,仿佛它就位于地图表面上一样。

sourceItem 属性包含待绘制的Qt Quick 对象,该对象可以是任何可见类型。

定位与尺寸设置

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

anchorPoint 属性提供了一种方法,通过设置项目偏移的像素数,将坐标与项目除左上角以外的其他部分对齐。简单来说,anchorPoint 在项目本身上指定的点,就是显示时与给定的coordinate 对齐的点。

除了锚定在地图上之外,MapQuickItem 还可以选择跟随地图的比例尺,并在地图放大或缩小时改变大小。这种行为由zoomLevel 属性控制。 如果未设置zoomLevel ,则默认行为是将项目绘制在“屏幕上”而非“地图上”,因此无论地图的缩放级别如何,其大小都保持不变。

性能

MapQuickItem 的性能通常与所包含的Qt Quick 项目单独运行时的性能相当。增加的开销主要包括对原始项目的平移和(可能的)缩放,以及将经纬度转换为屏幕坐标。

限制

注意:由于 实现细节的原因 ,放置在 MapQuickItem 内的项目其parent 项并非该 MapQuickItem 本身。请通过其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 : point

该属性用于确定sourceItem 上的哪个点将与地图上的坐标对齐。

autoFadeIn : bool

该属性控制当从非常低的缩放级别开始放大地图时,该图元是否自动淡入。默认情况下,该属性值为true 。将该属性设置为false 会导致地图图元始终采用QtQuick::Item::opacity 属性指定的不透明度,该属性的默认值为1.0。

coordinate : coordinate

该属性存储MapQuickItem 的锚点坐标。当在地图上绘制时,由anchorPoint 指定的sourceItem 上的点将始终与该坐标对齐。

在下图中,有 3 个 MapQuickItems,它们除了anchorPoint 属性的值不同外,其余均完全相同。每个 MapQuickItem 的anchorPoint 值都显示在该项上方。

地图上的三个标记,展示了不同锚点的影响

sourceItem : object

该属性包含将在地图上绘制的源项目。

zoomLevel : real

该属性控制MapQuickItem 内容的缩放行为。具体而言,通过设置此属性,可以在以下两种情况之间进行选择:对象在屏幕上绘制(并以屏幕像素为单位调整大小),或者在地图表面上绘制(其大小随地图缩放级别而变化)。

该属性的默认值为 0.0,表示在屏幕表面绘制对象。如果设置为其他值,则对象将绘制在地图表面上。 该值(若不为零)指定了对象在 1:1 比例尺下可见的缩放级别(即对象像素与屏幕像素相等)。 在低于该缩放级别的缩放级别下,对象会显得较小;而在更高的缩放级别下,则会显得较大。这与将该属性设置为零的情况相反——在后者情况下,无论缩放级别如何,对象在屏幕上的大小始终保持不变。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.