9import org.kde.kosmindoormap
10import QtQuick.Controls as QQC2
17 property alias mapLoader: map.loader
19 property alias styleSheet: map.styleSheet
21 property alias floorLevels: map.floorLevels
23 property alias view: map.view
25 property alias hasError: map.hasError
27 property alias mapData: map.mapData
29 property alias overlaySources: map.overlaySources
31 property alias region: map.region
33 property alias timeZone: map.timeZone
35 property alias hoveredElement: map.hoveredElement
38 signal elementPicked(var element);
40 signal elementLongPressed(var element);
43 function mapEventPointToScreen(eventPoint) {
44 let root = mapRoot.parent;
45 while (root.parent) { root = root.parent; }
46 return map.mapFromItem(root, eventPoint.scenePosition.x, eventPoint.scenePosition.y);
50 function elementAt(screenPosition) {
51 return map.elementAt(screenPosition.x, screenPosition.y);
61 boundsBehavior: Flickable.StopAtBounds
63 interactive: !pinchHandler.active
64 contentX:
map.view.panX
65 contentY:
map.view.panY
66 contentWidth:
map.view.panWidth
67 contentHeight:
map.view.panHeight
72 map.view.panTopLeft(flickable.contentX, flickable.contentY);
78 map.view.panTopLeft(flickable.contentX, flickable.contentY);
83 QQC2.ScrollBar.vertical: QQC2.ScrollBar {}
84 QQC2.ScrollBar.horizontal: QQC2.ScrollBar {}
88 acceptedButtons:
Qt.LeftButton
89 onTapped: function(eventPoint) {
90 const element = mapRoot.elementAt(mapRoot.mapEventPointToScreen(eventPoint));
91 if (!element.isNull) {
92 elementPicked(element);
95 onLongPressed: function() {
96 const element = mapRoot.elementAt(mapRoot.mapEventPointToScreen(tapHandler.point));
97 if (!element.isNull) {
98 elementLongPressed(element);
105 property double initialZoom
107 initialZoom =
map.view.zoomLevel
109 onActiveScaleChanged: {
110 map.view.setZoomLevel(pinchHandler.initialZoom + Math.log2(pinchHandler.activeScale),
111 Qt.point(pinchHandler.centroid.position.x - flickable.contentX, pinchHandler.centroid.position.y - flickable.contentY));
121 orientation:
Qt.Vertical
122 acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
123 property double initialZoom: 0.0
125 wheelHandler.initialZoom =
map.view.zoomLevel
126 wheelHandler.rotation = 0;
130 map.view.setZoomLevel(wheelHandler.initialZoom + 0.05 * wheelHandler.rotation,
131 Qt.point(wheelHandler.point.position.x - flickable.contentX, wheelHandler.point.position.y - flickable.contentY));
138 function onTransformationChanged() {
139 flickable.contentX =
map.view.panX;
140 flickable.contentY =
map.view.panY;
145 anchors.centerIn: parent
146 running:
map.loader.isLoading
151 text:
map.errorMessage
152 visible:
map.hasError
153 wrapMode:
Text.WordWrap
154 horizontalAlignment:
Qt.AlignHCenter
155 verticalAlignment:
Qt.AlignVCenter
@ Text
maximum width before wrapping
QFuture< void > map(Iterator begin, Iterator end, MapFunctor &&function)