mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-18 22:36:16 +00:00
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();
|
|
}
|
|
}
|
|
}
|