如何在Qt Quick中动态地将标记图标或MapCircle设置为地图上当前位置的固定大小

时间:2017-07-01 15:01:38

标签: qt qml

在缩放地图时,我找不到任何方法将MapCircle的半径设置为固定大小。标记图标在PlaceSearchModel中使用,但我无法使其动态化。当我缩放地图时,它会变大,当最小化地图时,标记会消失。

以下是代码:

import QtQuick 2.0
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0
import QtQuick.Controls.Universal 2.0
import Fluid.Controls 1.0
import QtLocation 5.6
import QtPositioning 5.6

TabbedPage {
    id: frame
    title: "Web Map"

    Tab {
        title: "Map Viewer"
        anchors {
            left: parent.left
            top: parent.top
            bottom: parent.bottom
        }
        width: parent.width
        clip: true
        Material.background: "white"
        Material.elevation: 1
        Universal.background: Universal.accent

        Plugin {
            id: mapPlugin
            name: "osm"
        }

        Map {
            id:map
            anchors.fill: parent
            plugin: mapPlugin
            zoomLevel: 14

            MapItemView {
                model: src
                delegate: MapQuickItem {
                    coordinate: src.position.coordinate

                    anchorPoint.x: image.width * 0.5
                    anchorPoint.y: image.height

                    sourceItem: Column {
                        Image { id: image; source: "marker.png" }
                        Text { text: title; font.bold: true }
                    }
                }
            }

            MapCircle {
                center : src.position.coordinate
                radius: parent.width/10
                border.width: 1
                color: 'green'
            }
        }
        PositionSource {
            id: src
            updateInterval: 1000
            active: true

            onPositionChanged: {
                var coord = src.position.coordinate;
                console.debug("current position:", coord.latitude, coord.longitude);
                map.center = position.coordinate
            }
        }
}
}

截图:

enter image description here

2 个答案:

答案 0 :(得分:2)

我从Qt的例子中找到了一个名为Places的解决方案:

repository/conf

答案 1 :(得分:0)

MapCircle的半径以米为单位定义,它是一个地理特征。您找到了正确的解决方案:使用MapQuickItem。这样会保持其大小(像素或屏幕点)。