subsurface/mobile-widgets/qml/MapWidget.qml
Lubomir I. Ivanov f2608edc56 mapwidget.qml: track the marker selection
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>
2017-07-28 07:31:11 -07:00

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();
}
}
}