mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-29 13:40:20 +00:00
f2608edc56
Add a MouseArea to the MapItemView delagate and onClick set the "mapHelper.model.selectedUuid" to the uuid of the clicked marker. This updates the "selectedUuid" property inside MapLocationModel. Based on "mapHelper.model.selectedUuid" it is now possible to show two seprate images for selected / deselected markers. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
79 lines
1.4 KiB
QML
79 lines
1.4 KiB
QML
// SPDX-License-Identifier: GPL-2.0
|
|
import QtQuick 2.0
|
|
import QtLocation 5.3
|
|
import QtPositioning 5.3
|
|
import org.subsurfacedivelog.mobile 1.0
|
|
|
|
Item {
|
|
|
|
readonly property var esriMapTypeIndexes: { "STREET": 0, "SATELLITE": 1 };
|
|
|
|
Plugin {
|
|
id: mapPlugin
|
|
name: "esri"
|
|
}
|
|
|
|
MapWidgetHelper {
|
|
id: mapHelper
|
|
map: map
|
|
}
|
|
|
|
Map {
|
|
id: map
|
|
anchors.fill: parent
|
|
plugin: mapPlugin
|
|
zoomLevel: 1
|
|
|
|
property var newCenter: QtPositioning.coordinate(0, 0);
|
|
|
|
Component.onCompleted: {
|
|
map.activeMapType = map.supportedMapTypes[esriMapTypeIndexes.SATELLITE];
|
|
}
|
|
|
|
MapItemView {
|
|
id: mapItemView
|
|
|
|
model: mapHelper.model
|
|
delegate: MapQuickItem {
|
|
anchorPoint.x: 0
|
|
anchorPoint.y: mapItemImage.height
|
|
coordinate: model.coordinate
|
|
sourceItem: Image {
|
|
id: mapItemImage;
|
|
source: "qrc:///mapwidget-marker" + (mapHelper.model.selectedUuid === model.uuid ? "-selected" : "");
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
mapHelper.model.selectedUuid = model.uuid
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ParallelAnimation {
|
|
id: mapAnimation
|
|
|
|
CoordinateAnimation {
|
|
target: map
|
|
property: "center"
|
|
to: map.newCenter
|
|
duration: 2000
|
|
}
|
|
NumberAnimation {
|
|
target: map
|
|
property: "zoomLevel"
|
|
to: 17
|
|
duration: 3000
|
|
easing.type: Easing.InCubic
|
|
}
|
|
}
|
|
|
|
function centerOnCoordinate(coordinate) {
|
|
map.newCenter = coordinate;
|
|
map.zoomLevel = 2;
|
|
mapAnimation.restart();
|
|
}
|
|
}
|
|
}
|