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>
70 lines
1.3 KiB
QML
70 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();
|
|
}
|
|
}
|
|
}
|