如何在qml中旋转地图?

问题描述

如何使用 MouseArea(按下 MidButton)在 qml 中旋转地图?

Map {
    id: map
    z: 0.1
    anchors.fill: parent

    property bool mapIsEmpty: submap && (submap.plugin.name === "itemsoverlay")
    property string provider: "itemsoverlay"

    // need for called outside
    function openWizzardAddImage() {
        wizzardAddImage.show();
    }

    zoomLevel: 14
    maximumZoomLevel: 20
    minimumZoomLevel: 14
    gesture.enabled: gestureEnabled
    gesture.acceptedGestures: MapGestureArea.PanGesture
                              | MapGestureArea.PinchGesture
                              | MapGestureArea.RotationGesture
    color: "transparent"
    plugin: Plugin { name: "itemsoverlay" }
    MouseArea {
        id: _mouseArea
        anchors.fill: parent
        hoverEnabled: true
        acceptedButtons: Qt.AllButtons

        function coord(mouse) {
            return map.toCoordinate(Qt.point(mouse.x,mouse.y),false)
        }

        onClicked: {
            if (mouse.button == Qt.RightButton) {
                map.clickedContextMenu(coord(mouse))
            }
            else if (mouse.button == Qt.LeftButton) {
                map.clicked(coord(mouse))
            }

        }
        onPositionChanged: {
            if (mouse.button == Qt.RightButton)
                coordText.coordinate = coord(mouse)
        }
        onDoubleClicked: {
            if (mouse.button == Qt.LeftButton)
                map.doubleClicked(_mouseArea.coord(mouse))
        }
        onWheel: {
            if (wheel.modifiers && Qt.ControlModifier )
                return

            wheel.accepted = map.noWheel
        }
    }
 }

我启用了 MouseArea 和手势,但如何在按下鼠标中键时围绕光标旋转地图? 附言我在谷歌上搜索了 MapGesture,但它只有在你点击屏幕时才有效(有点)。

解决方法

使用 Map QML 类型的轴承属性

例如

Map {
        id: map
        anchors.fill: parent
        plugin:Plugin {
            name: "osm"
        }
        zoomLevel: 15
        bearing: 20        // for rotating map
    }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...