我想拖动一个MapQuickItem,这个MapQuickItem是在组件中声明的,并从地图中获取实时坐标,我可以成功拖动组件,但我拖动MapQuickItem时,鼠标光标快速离开MapQuickItem,拖动中断。如何才能在拖动时使鼠标光标和MapQuickItem同步。
Map {
id: map
anchors.fill: parent
activeMapType: supportedMapTypes[1];
zoomLevel: 18
plugin: hereMaps
center: QtPositioning.coordinate(19.997454, 73.789803)
MapItemView {
id: markerItem
model: [
{ id: "marker1", color: "red" },
{ id: "marker2", color: "green" },
]
delegate: mapMarkerComponent
}
Component {
id : mapMarkerComponent
MapQuickItem {
id: mapMarker
coordinate: QtPositioning.coordinate(19.997454, 73.789803)
sourceItem: Rectangle {
id: handle
color: modelData.color
width: 40
height: 40
MouseArea {
drag.target: parent
anchors.fill: parent
}
onXChanged: {
mapMarker.x += x
}
onYChanged: {
mapMarker.y += y
}
}
onCoordinateChanged{
consol.log("coord",QtPositioning.coordinate(mapMarker.x ,mapMarker.y )}
}
}
}
当使用MouseArea拖动时,你不需要这样更新mapMarker的位置。根据你拖动的方式,这将导致将mapMarker(以及MouseArea)从鼠标位置下移出。
相反,只需通过设置drag.target: mapMarker让MouseArea自己拖动目标,并摆脱你的onXChanged和onYChanged处理程序。