mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
MapItemView is the QML class that handles the "create map markers based on a model". In this case the model is created as part of the MapWidgetHelper, so here passing "mapHelper.model" to the "model" property is enough. The delegate receives coordinates from the model as "model.latitude", "model.logitude" and converts them to QGeoCoordinate. The "sourceItem" image for the delagete is just an image ATM and is fetched from QRC. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
69 lines
1.3 KiB
QML
69 lines
1.3 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: QtPositioning.coordinate(latitude, longitude)
|
|
sourceItem: Image { id: mapItemImage; source: "qrc:///mapwidget-marker-image" }
|
|
}
|
|
}
|
|
|
|
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 centerOnCoordinates(latitude, longitude) {
|
|
map.newCenter = QtPositioning.coordinate(latitude, longitude);
|
|
map.zoomLevel = 2;
|
|
mapAnimation.restart();
|
|
}
|
|
}
|
|
}
|