Когда я увидел этот вопрос, я подумал, что вы пытаетесь изобрести колесо. Я никогда раньше не работал с Maps в Qt, но AFAIK Qt Я был уверен, что должен быть самый простой способ достичь своей цели. Так что здесь у вас есть немного другое решение. Проще, на мой взгляд:
Window {
...
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" },
{ id: "marker3", color: "blue" }
]
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: {
console.log(modelData.id + ":" + coordinate);
}
}
}
}
}
Я думаю, что все там само собой объясняется:)