Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+180
@@ -0,0 +1,180 @@
|
||||
import QtQuick
|
||||
import QtPositioning
|
||||
import QtLocation
|
||||
import QtQuick.Controls
|
||||
|
||||
Rectangle {
|
||||
id: mapContainer
|
||||
width: parent.width * 3 / 4
|
||||
height: parent.height
|
||||
|
||||
property real bookmarkTimestamp: 0
|
||||
|
||||
|
||||
function statusGen() {
|
||||
var random = Math.random();
|
||||
var status;
|
||||
|
||||
if (random < 0.01) {
|
||||
status = 'damaged';
|
||||
} else if (random < 0.10) {
|
||||
status = 'destroyed';
|
||||
} else {
|
||||
status = 'fully_capable';
|
||||
}
|
||||
|
||||
return status
|
||||
}
|
||||
|
||||
function partieGen() {
|
||||
var random = Math.random();
|
||||
var status;
|
||||
|
||||
if (random < 0.33) {
|
||||
status = 'Red';
|
||||
} else {
|
||||
status = 'Blue';
|
||||
}
|
||||
|
||||
return status
|
||||
}
|
||||
|
||||
function createMarker() {
|
||||
var centerLat = 53.5200;
|
||||
var centerLng = 9.4050;
|
||||
var latRange = 0.1; // Beschränke auf ±0.1 Grad um centerLat
|
||||
var lngRange = 0.1; // Beschränke auf ±0.1 Grad um centerLng
|
||||
|
||||
for (var i = 1; i <= 200; i++) {
|
||||
var lat = centerLat + (Math.random() * latRange * 2 - latRange);
|
||||
var lng = centerLng + (Math.random() * lngRange * 2 - lngRange);
|
||||
|
||||
|
||||
var component = Qt.createComponent("marker.qml");
|
||||
var sprite = component.createObject(map, {
|
||||
"lat": lat,
|
||||
"lng": lng
|
||||
});
|
||||
logic.markerHelper.postObject(replay_uuid, i, lng, lat, statusGen(), partieGen());
|
||||
markers.push(sprite);
|
||||
}
|
||||
return markers;
|
||||
}
|
||||
|
||||
|
||||
Timer {
|
||||
id: moveTimer
|
||||
interval: 1000 // Move every second
|
||||
repeat: true
|
||||
onTriggered: {
|
||||
for (var i = 0 ; i < markers.length; i++) {
|
||||
|
||||
var newLat = markers[i].lat + (Math.random() * 0.01 - 0.005)
|
||||
var newLng = markers[i].lng + (Math.random() * 0.01 - 0.005)
|
||||
|
||||
markers[i].lat = newLat
|
||||
markers[i].lng = newLng
|
||||
|
||||
logic.markerHelper.postObject(replay_uuid, i+1, newLng, newLat, statusGen(), partieGen())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Plugin {
|
||||
id: mapPlugin
|
||||
name: "osm"
|
||||
PluginParameter {
|
||||
name: "osm.mapping.custom.host"
|
||||
value: "https://tile.openstreetmap.de/"
|
||||
}
|
||||
}
|
||||
|
||||
Map {
|
||||
id: map
|
||||
anchors.fill: parent
|
||||
plugin: mapPlugin
|
||||
center: QtPositioning.coordinate(53.5200, 9.4050) // Berlin
|
||||
zoomLevel: 14
|
||||
z: 1
|
||||
|
||||
property geoCoordinate startCentroid
|
||||
property var markers: []
|
||||
|
||||
PinchHandler {
|
||||
id: pinch
|
||||
target: null
|
||||
onActiveChanged: if (active) {
|
||||
map.startCentroid = map.toCoordinate(
|
||||
pinch.centroid.position, false)
|
||||
}
|
||||
onScaleChanged: delta => {
|
||||
map.zoomLevel += Math.log2(delta)
|
||||
map.alignCoordinateToPoint(
|
||||
map.startCentroid, pinch.centroid.position)
|
||||
}
|
||||
onRotationChanged: {} // Deaktiviert Rotation
|
||||
grabPermissions: PointerHandler.TakeOverForbidden
|
||||
}
|
||||
|
||||
DragHandler {
|
||||
id: drag
|
||||
target: map
|
||||
onTranslationChanged: delta => map.pan(-delta.x, -delta.y)
|
||||
}
|
||||
|
||||
activeMapType: supportedMapTypes[supportedMapTypes.length - 1]
|
||||
|
||||
Button {
|
||||
text: "Start Simulation"
|
||||
width: parent.width
|
||||
z: 10
|
||||
onClicked: {
|
||||
var sprites = createMarker()
|
||||
|
||||
for (var i = 0; i < sprites.length; i++) {
|
||||
map.addMapItem(sprites[i])
|
||||
}
|
||||
|
||||
moveTimer.start()
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Add Lesezeichen"
|
||||
width: parent.width
|
||||
z:10
|
||||
y:25
|
||||
onClicked: {
|
||||
bookmarkTimestamp = Date.now();
|
||||
bookmarkDialog.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
Dialog {
|
||||
id: bookmarkDialog
|
||||
title: "Add Lesezeichen"
|
||||
modal: true
|
||||
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||
|
||||
Column {
|
||||
spacing: 10
|
||||
padding: 20
|
||||
|
||||
TextField {
|
||||
id: nameField
|
||||
placeholderText: "Name"
|
||||
}
|
||||
|
||||
TextArea {
|
||||
id: descriptionField
|
||||
placeholderText: "Description"
|
||||
}
|
||||
}
|
||||
|
||||
onAccepted: {
|
||||
var name = nameField.text;
|
||||
var description = descriptionField.text;
|
||||
logic.bookmarkHelper.postBookmark(replay_uuid, name, description, bookmarkTimestamp)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user