我想拖动一个在组件内部声明的 MapQuickItem,并从地图中获取实时坐标。运行代码时,我收到这样的错误“qrc:/main.qml:15: ReferenceError: mouseArea is not defined”。如何在组件外访问mouseAea?或者在哪里声明拖动的属性来访问鼠标区域?
Window {
id: window
width: 800
height: 800
visible: true
property bool dragged: mouseArea.drag.active
Plugin
{
id: hereMaps
name: "here"
PluginParameter { name: "here.app_id"; value: "oBB4FivcP23m2UZQCj8K" }
PluginParameter { name: "here.token"; value: "P-D8XRRGeVt0YphUuOImeA" }
}
Map {
id: mapOfWorld
anchors.centerIn: parent;
anchors.fill: parent
activeMapType: supportedMapTypes[1];
zoomLevel: 18
plugin: hereMaps
center: QtPositioning.coordinate(19.997454, 73.789803)
MouseArea{
id : mapAreaClick
height: mapOfWorld.height
width: mapOfWorld.width
hoverEnabled: true
anchors.fill: mapOfWorld
preventStealing : true
propagateComposedEvents : true
anchors.centerIn: mapOfWorld
}
Component { // here error occurs
id : test
MapQuickItem
{
id: anchor
coordinate: QtPositioning.coordinate(19.997454, 73.789803)
sourceItem: Item {
Rectangle {
id: handle
color: "red"
width: 40
height: 40
radius: 40
x: anchor.x - width
y: anchor.y - height
Drag.active: true
MouseArea {
id: mouseArea
drag.target: handle
drag.threshold: 0
anchors.fill: parent
}
Connections {
target: anchor
onXChanged: if (!dragged) x = anchor.x - width
onYChanged: if (!dragged) y = anchor.y - height
}
onXChanged: {
console.log("X:"+x)
var cordinate = mapOfWorld.toCoordinate((Qt.point((x),(y))));
console.log("onXChanged :" , cordinate)
if (dragged) anchor.x = x + width
}
onYChanged:{
console.log("Y:"+y)
var cordinate = mapOfWorld.toCoordinate((Qt.point((x),(y))));
console.log("onYChanged : ", cordinate)
if (dragged) anchor.y = y + height
}
}
}
}
}
}
}