diff options
Diffstat (limited to 'app/qml/MapWindow.qml')
-rw-r--r-- | app/qml/MapWindow.qml | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/app/qml/MapWindow.qml b/app/qml/MapWindow.qml deleted file mode 100644 index 3772c31..0000000 --- a/app/qml/MapWindow.qml +++ /dev/null @@ -1,434 +0,0 @@ -import QtLocation 5.9 -import QtPositioning 5.0 -import QtQuick 2.0 - -import com.mapbox.cheap_ruler 1.0 - -Item { - id: mapWindow - - // Km/h - property int carSpeed: 180 - property bool navigating: false - - property real rotateAngle: 0 - property var startPoint: QtPositioning.coordinate(36.12549, -115.173498) - property var endPoint: QtPositioning.coordinate(36.0659063, -115.1800443) - - states: [ - State { - name: "" - PropertyChanges { target: map; tilt: 0; bearing: 0; zoomLevel: map.zoomLevel } - }, - State { - name: "navigating" - PropertyChanges { target: map; tilt: 60; zoomLevel: 20 } - } - ] - - transitions: [ - Transition { - to: "*" - RotationAnimation { target: map; property: "bearing"; duration: 100; direction: RotationAnimation.Shortest } - NumberAnimation { target: map; property: "zoomLevel"; duration: 100 } - NumberAnimation { target: map; property: "tilt"; duration: 100 } - } - ] - - state: navigating ? "navigating" : "" - - Image { - id: backgroud - anchors.left: parent.left - anchors.top: parent.top - width: parent.width - height: 100 - - source: "qrc:simple-bottom-background-white.png" - z: 1 - } - - Image { - id: carCurrent - anchors.left: parent.left - anchors.top: parent.top - z: 3 - - visible: !mapWindow.navigating - source: "qrc:car-focus.png" - - MouseArea { - id: area - - anchors.fill: parent - - onClicked: { - mapWindow.navigating = true - currentDistanceAnimation.start(); - } - } - - scale: area.pressed ? 0.85 : 1.0 - - Behavior on scale { - NumberAnimation {} - } - } - - Image { - id: turnDirection - anchors.left: carCurrent.right - anchors.top: parent.top - anchors.leftMargin: 20 - - z: 3 - } - - CustomLabel { - id: distance - anchors.left: carCurrent.right - anchors.bottom: backgroud.bottom - z: 3 - - font.pixelSize: 38 - } - - CustomLabel { - id: turnInstructions - anchors.left: turnDirection.right - anchors.top: parent.top - anchors.leftMargin: 30 - anchors.topMargin: (backgroud.height-turnInstructions.height)/2 - z: 3 - - font.pixelSize: 38 - } - - Map { - id: map - anchors.fill: parent - - plugin: Plugin { - name: "mapboxgl" - - PluginParameter { - name: "mapboxgl.mapping.items.insert_before" - value: "road-label-small" - } - - PluginParameter { - name: "mapboxgl.mapping.additional_style_urls" - value: "mapbox://styles/mapbox/streets-v9" - } - - PluginParameter { - name: "mapboxgl.access_token" - value: "pk.eyJ1IjoidG1wc2FudG9zIiwiYSI6ImNqMWVzZWthbDAwMGIyd3M3ZDR0aXl3cnkifQ.FNxMeWCZgmujeiHjl44G9Q" - } - - PluginParameter { - name: "mapboxgl.mapping.cache.directory" - value: "/home/0/app-data/navigation/" - } - } - - center: mapWindow.navigating ? ruler.currentPosition : startPoint - zoomLevel: 5 - minimumZoomLevel: 0 - maximumZoomLevel: 20 - tilt: 0 - - copyrightsVisible: false - - MouseArea { - anchors.fill: parent - - onWheel: { - mapWindow.navigating = false - wheel.accepted = false - } - } - gesture.onPanStarted: { - mapWindow.navigating = false - } - - gesture.onPinchStarted: { - mapWindow.navigating = false - } - - RotationAnimation on bearing { - id: bearingAnimation - - duration: 250 - alwaysRunToEnd: false - direction: RotationAnimation.Shortest - running: mapWindow.navigating - } - - Location { - id: previousLocation - coordinate: QtPositioning.coordinate(0, 0); - } - - onCenterChanged: { - if (previousLocation.coordinate === center || !mapWindow.navigating) - return; - - bearingAnimation.to = previousLocation.coordinate.azimuthTo(center); - bearingAnimation.start(); - - previousLocation.coordinate = center; - } - - function updateRoute() { - routeQuery.clearWaypoints(); - routeQuery.addWaypoint(startMarker.coordinate); - routeQuery.addWaypoint(endMarker.coordinate); - } - - MapQuickItem { - id: startMarker - - sourceItem: Image { - id: greenMarker - source: "qrc:///marker-green.png" - } - - coordinate : startPoint - anchorPoint.x: greenMarker.width / 2 - anchorPoint.y: greenMarker.height / 2 - - MouseArea { - drag.target: parent - anchors.fill: parent - - onReleased: { - map.updateRoute(); - } - } - } - - MapQuickItem { - id: endMarker - - sourceItem: Image { - id: redMarker - source: "qrc:///marker-end.png" - } - - coordinate : endPoint - anchorPoint.x: redMarker.width / 2 - anchorPoint.y: redMarker.height / 2 - - MouseArea { - drag.target: parent - anchors.fill: parent - - onReleased: { - map.updateRoute(); - } - } - } - - MapItemView { - model: routeModel - - delegate: MapRoute { - route: routeData - line.color: "#6b43a1" - line.width: map.zoomLevel - 5 - opacity: (index == 0) ? 1.0 : 0.3 - - onRouteChanged: { - ruler.path = routeData.path; - ruler.currentDistance = 0; - - currentDistanceAnimation.stop(); - currentDistanceAnimation.to = ruler.distance; - } - } - } - - MapQuickItem { - zoomLevel: map.zoomLevel - - sourceItem: Image { - id: carMarker - source: "qrc:///car-marker2.png" - transform: Rotation { - origin.x: carMarker.width / 2; - origin.y: carMarker.height / 2; - angle: rotateAngle - } - } - - coordinate: ruler.currentPosition - anchorPoint.x: carMarker.width / 2 - anchorPoint.y: carMarker.height / 2 - - Location { - id: previousCarLocation - coordinate: QtPositioning.coordinate(0, 0); - } - - onCoordinateChanged: { - if(coordinate === mapWindow.startPoint) - return; - rotateAngle = previousCarLocation.coordinate.azimuthTo(coordinate); - previousCarLocation.coordinate = coordinate; - } - } - - CheapRuler { - id: ruler - - PropertyAnimation on currentDistance { - id: currentDistanceAnimation - - duration: ruler.distance / mapWindow.carSpeed * 60 * 60 * 1000 - alwaysRunToEnd: false - } - - onCurrentDistanceChanged: { - var total = 0; - var total2 = 0; - var i = 0; - var j = 0; - var alltime = routeModel.get(0).travelTime; - var alldistance = routeModel.get(0).distance; - - // XXX: Use car speed in meters to pre-warn the turn instruction - while (total - mapWindow.carSpeed < ruler.currentDistance * 1000 && i < routeModel.get(0).segments.length) - { - total += routeModel.get(0).segments[i++].maneuver.distanceToNextInstruction; - } - - while (total2 < ruler.currentDistance * 1000 && j < routeModel.get(0).segments.length) - { - total2 += routeModel.get(0).segments[j++].maneuver.distanceToNextInstruction; - } - - var dis = (total2 - ruler.currentDistance * 1000).toFixed(1); - if(dis > 1000) - { - distance.text = (dis / 1000).toFixed(1) + " km"; - } - else - { - distance.text = dis + " m"; - } - - var travaltimesec=((1 - (ruler.currentDistance * 1000)/alldistance)*alltime).toFixed(0); - - if((travaltimesec/3600)>=1) - { - travaltime.text = (travaltimesec/3600).toFixed(0) + "h" + ((travaltimesec%3600)/60).toFixed(0) + "min"; - } - else - { - travaltime.text = (travaltimesec/60).toFixed(0) + "min"; - } - - turnInstructions.text = routeModel.get(0).segments[i - 1].maneuver.instructionText; - - if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionForward) - { - turnDirection.source = "qrc:arrow-0.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionLightRight) - { - turnDirection.source = "qrc:arrow-r-30.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionRight) - { - turnDirection.source = "qrc:arrow-r-45.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionHardRight) - { - turnDirection.source = "qrc:arrow-r-75.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionUTurnRight) - { - turnDirection.source = "qrc:arrow-r-180.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionLightLeft) - { - turnDirection.source = "qrc:arrow-l-30.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionLeft) - { - turnDirection.source = "qrc:arrow-l-45.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionHardLeft) - { - turnDirection.source = "qrc:arrow-l-75.png"; - } - else if(routeModel.get(0).segments[i - 1].maneuver.direction === RouteManeuver.DirectionUTurnLeft) - { - turnDirection.source = "qrc:arrow-l-180.png"; - } - else - { - turnDirection.source = "qrc:arrow-0.png"; - } - - } - } - } - - RouteModel { - id: routeModel - - autoUpdate: true - query: routeQuery - - plugin: Plugin { - name: "mapbox" - - // Development access token, do not use in production. - PluginParameter { - name: "mapbox.access_token" - value: "pk.eyJ1IjoicXRzZGsiLCJhIjoiY2l5azV5MHh5MDAwdTMybzBybjUzZnhxYSJ9.9rfbeqPjX2BusLRDXHCOBA" - } - } - - Component.onCompleted: { - if (map) { - map.updateRoute(); - } - } - } - - RouteQuery { - id: routeQuery - } - - Image { - id: bottombackgroud - anchors.left: parent.left - anchors.bottom: parent.bottom - width: parent.width - height: 100 - - source: "qrc:simple-bottom-background-white.png" - z: 1 - } - - CustomLabel { - id: travaltime - anchors.left: bottombackgroud.left - anchors.verticalCenter: bottombackgroud.verticalCenter - visible: mapWindow.navigating - z: 3 - font.pixelSize: 38 - } - - Row { - anchors.horizontalCenter: bottombackgroud.horizontalCenter - anchors.verticalCenter: bottombackgroud.verticalCenter - width: bottombackgroud.width / 4 - spacing: 10 - z:3 - DateAndTime {} - } -} |