subsurface/mobile-widgets/qml/MapWidget.qml
Lubomir I. Ivanov d783984443 mapwidget.qml: implement the MapItemView with delegate
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>
2017-07-28 07:31:11 -07:00

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