finish
This commit is contained in:
88
res/qml/map.qml
Normal file
88
res/qml/map.qml
Normal file
@ -0,0 +1,88 @@
|
||||
import QtQuick 2.15
|
||||
import QtLocation 5.15
|
||||
import QtPositioning 5.15
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
|
||||
Map {
|
||||
id: map
|
||||
anchors.fill: parent
|
||||
plugin: Plugin {
|
||||
name: "osm"
|
||||
PluginParameter {
|
||||
name: "osm.mapping.custom.host"
|
||||
value: "https://tile.openstreetmap.org/"
|
||||
}
|
||||
PluginParameter {
|
||||
name: "osm.mapping.providersrepository.disabled"
|
||||
value: "true"
|
||||
}
|
||||
}
|
||||
center: QtPositioning.coordinate(mapCenter.latitude, mapCenter.longitude)
|
||||
zoomLevel: 15
|
||||
Repeater {
|
||||
model: pointsList
|
||||
MapQuickItem {
|
||||
id: point
|
||||
coordinate: modelData
|
||||
anchorPoint.x: 10
|
||||
anchorPoint.y: 10
|
||||
|
||||
sourceItem: Rectangle {
|
||||
width: 20
|
||||
height: 20
|
||||
color: "red"
|
||||
radius: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
drag.target: map
|
||||
|
||||
property real startLat: map.center.latitude
|
||||
property real startLon: map.center.longitude
|
||||
property real startX: 0
|
||||
property real startY: 0
|
||||
|
||||
property real zoomFactor: Math.pow(2, map.zoomLevel - 15)
|
||||
|
||||
cursorShape: Qt.ArrowCursor
|
||||
|
||||
onPressed: {
|
||||
startLat = map.center.latitude
|
||||
startLon = map.center.longitude
|
||||
startX = mouseArea.mouseX
|
||||
startY = mouseArea.mouseY
|
||||
}
|
||||
|
||||
onPositionChanged: {
|
||||
var dx = mouseArea.mouseX - startX
|
||||
var dy = mouseArea.mouseY - startY
|
||||
|
||||
var factor = Math.pow(2, 15 - map.zoomLevel) * 0.00005;
|
||||
|
||||
map.center = QtPositioning.coordinate(
|
||||
startLat - dy * -factor,
|
||||
startLon + dx * -factor
|
||||
)
|
||||
}
|
||||
|
||||
onWheel: {
|
||||
if (wheel.angleDelta.y < 0) {
|
||||
map.zoomLevel -= 1
|
||||
} else {
|
||||
map.zoomLevel += 1
|
||||
}
|
||||
map.zoomLevel = Math.max(1, Math.min(map.zoomLevel, 18));
|
||||
}
|
||||
|
||||
onContainsMouseChanged: {
|
||||
cursorShape = mouseArea.containsMouse ? Qt.ClosedHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user