【问题标题】:Displaying Marker in QT QML Map在 QT QML 地图中显示标记
【发布时间】:2019-03-28 04:17:12
【问题描述】:

我正在尝试在 QT QML Map 中添加标记。这是我用来在地图中添加标记的代码,但标记没有显示。请帮忙!我是 QT 编程的初学者。对不起我的语法。谢谢!

 Plugin {
    id: mapPlugin
    name: "osm" 
}

function addMarker(latitude, longitude)
{
var Component = Qt.createComponent("qrc:///views/marker.qml")
var Item = Component.createObject(window, { coordinate:
QtPositioning.coordinate(latitude, longitude) })
Map.addMapItem(Item)
 }

     Map {
         anchors.fill: parent
         plugin: mapPlugin
         center: QtPositioning.coordinate(59.14, 14.15)
         zoomLevel: 14

         Component.onCompleted:
         {
         addMarker(59.14, 14.15)

         }
     }

Marker.qml

MapQuickItem
{
    id: marker
    anchorPoint.x: marker.width / 4
    anchorPoint.y: marker.height
    sourceItem: Image
{

  Image
    {
    id: icon
    source: "marker.png"
    sourceSize.width: 40
    sourceSize.height: 40
    }

}

}

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    您必须使用 id 来引用组件,例如,如果您有 Map 并运行 Map.addMapItem(...) 到哪个 Map 将添加项目?另一方面,您有一个坏习惯:您使用现有元素的名称,例如 Item 已经是一种类型,在这种情况下将其更改为 item 以避免混淆,考虑到上述解决方案是:

    import QtQuick 2.9
    import QtQuick.Window 2.2
    import QtLocation 5.12
    import QtPositioning 5.12
    
    Window {
        id: window
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
        Plugin {
            id: mapPlugin
            name: "osm"
        }
        function addMarker(latitude, longitude)
        {
            var Component = Qt.createComponent("qrc:///views/marker.qml")
            var item = Component.createObject(window, {
                                                  coordinate: QtPositioning.coordinate(latitude, longitude)
                                              })
            map.addMapItem(item)
        }
        Map {
            id: map
            anchors.fill: parent
            plugin: mapPlugin
            center: QtPositioning.coordinate(59.14, 14.15)
            zoomLevel: 14
            Component.onCompleted:addMarker(59.14, 14.15)
        }
    }
    

    另一方面,在标记中,您指出一个图像作为一个子图像有另一个图像,您认为这是正确的吗?没有必要,因此更正的标记代码是:

    import QtQuick 2.0
    import QtLocation 5.12
    
    MapQuickItem{
        id: marker
        anchorPoint.x: marker.width / 4
        anchorPoint.y: marker.height
        sourceItem: Image{
            id: icon
            source: "marker.png"
            sourceSize.width: 40
            sourceSize.height: 40
        }
    }
    

    完整的例子在下面link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-25
      • 2018-11-04
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多