从QML中的坐标获取经度和纬度

时间:2019-05-12 19:33:01

标签: qt qml maps

我有一个显示地图的QML代码,它有一个用于图像的MapQuickItem

MapQuickItem {
    id: transMarker

    sourceItem: Image {
        id: transImage
        width: 50
        height: 50
        source: "trans.png"
    }
}

当我点击地图时,它应该将该图像粘贴到地图上,我可以通过以下代码来实现

transMarker.coordinate = map.toCoordinate(Qt.point(mouse.x,mouse.y))

我想永久保存位置,但是问题是我正在尝试打印map.toCoordinate(Qt.point(mouse.x,mouse.y))

它以度和分钟为单位打印(坐标:8°29'21.4“ N,76°57'41.9” E)

我想将其作为十进制经度和纬度(坐标:76.9616344 8.4892798)。

如何实现?

1 个答案:

答案 0 :(得分:2)

您必须使用latitudelongitudecoordinate属性:

Map {
    id: map
    anchors.fill: parent
    plugin: Plugin {
        name: "osm"
    }
    center: QtPositioning.coordinate(59.91, 10.75)
    zoomLevel: 10

    MapQuickItem {
        id: transMarker
        sourceItem: Image {
            id: transImage
            width: 50
            height: 50
            source: "trans.png"
        }
    }
    MouseArea{
        anchors.fill: parent
        onClicked: {
            var coord = map.toCoordinate(Qt.point(mouse.x,mouse.y));
            transMarker.coordinate = coord;
            console.log(coord.latitude, coord.longitude)
        }
    }
}

输出:

qml: 59.969159320456804 10.824157714841107
qml: 59.98427615215763 10.895568847649372
qml: 59.989771470871446 10.780212402338407
qml: 59.965722714293186 10.652496337891108