2017-03-24 59 views
0

我想實現自我拖拽MapQuickItem。簡單的例子:QtQuick:在地圖上拖動MapQuickItem

MapQuickItem { 
    id: markerItem 

    sourceItem: Rectangle { 
     id: sourceRect 
     color: "red" 
     width: 20 
     height: 20 
     x: 0 
     y: 0 

     MouseArea { 
      drag.target: markerItem 
      cursorShape: drag.active ? Qt.ClosedHandCursor : Qt.OpenHandCursor 
      anchors.fill: parent 
     } 
    } 
    Drag.active: true 
} 

重點是,如果我拖動快,只要光標離開標記拖動中斷。有沒有辦法讓它正常工作?

+0

@derM,是它了。 –

+0

然後,您可以嘗試通過使用「MouseArea.preventStealing:true」來防止出現問題,或者在拖動處於活動狀態時禁用「Map」的手勢。雖然我沒有和Map一起工作,所以我不能答應你,這會有所幫助。 – derM

+1

@derM,好吧,都沒有幫助。我找到了一個解決方法,雖然 –

回答

1

我已經找到了解決辦法:使用單獨的可拖動QQuickItem和錨MapQuickItem

MapQuickItem { 
    id: anchor 
    sourceItem: Item {} 
} 

Rectangle { 
    id: handle 

    property bool dragged: mouseArea.drag.active 

    color: "red" 
    width: 20 
    height: 20 
    x: anchor.x - width 
    y: anchor.y - height 

    MouseArea { 
     id: mouseArea 
     enabled: draggable 
     drag.target: handle 
     drag.threshold: 0 
     anchors.fill: parent 
     cursorShape: dragged ? Qt.ClosedHandCursor : Qt.OpenHandCursor 
    } 

    Connections { 
     target: anchor 
     onXChanged: if (!dragged) x = anchor.x - width 
     onYChanged: if (!dragged) y = anchor.y - height 
    } 

    onXChanged: if (dragged) anchor.x = x + width 
    onYChanged: if (dragged) anchor.y = y + height 

    Drag.active: true 
} 

這不是與動態填充QML Map超級方便,但做這項工作