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

gan*_*bra 2 maps qt qml

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

MapQuickItem {
    id: transMarker

    sourceItem: Image {
        id: transImage
        width: 50
        height: 50
        source: "trans.png"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

transMarker.coordinate = map.toCoordinate(Qt.point(mouse.x,mouse.y))
Run Code Online (Sandbox Code Playgroud)

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

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

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

如何做到这一点?

eyl*_*esc 5

您必须使用latitude和 的longitude属性coordinate

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

qml: 59.969159320456804 10.824157714841107
qml: 59.98427615215763 10.895568847649372
qml: 59.989771470871446 10.780212402338407
qml: 59.965722714293186 10.652496337891108
Run Code Online (Sandbox Code Playgroud)