diff options
author | Timo Ojala <timo.ojala@digia.com> | 2011-12-05 10:25:25 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-12 05:35:28 +0100 |
commit | 4a8c6da635a0f30fdcb597f7d7eb40216698a59a (patch) | |
tree | 15f075a8e72ebbdde94ad50bc00b80baba2d5261 /examples | |
parent | 1a3066cc750ad648f94864ab390d46429c2b196f (diff) | |
download | qtlocation-4a8c6da635a0f30fdcb597f7d7eb40216698a59a.tar.gz |
Added Marker popup menu to mapviewer
* Enabled Marker popup menu (delete, delete all, coordinates)
* Added showing of distance to next marker
Change-Id: I8d7ae58b9759cd33198523a96c4b6fa128562e01
Reviewed-by: Natalia Shubina <natalia.shubina@nokia.com>
Diffstat (limited to 'examples')
3 files changed, 65 insertions, 19 deletions
diff --git a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml index 6124b1cc..e325815a 100644 --- a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml +++ b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml @@ -57,7 +57,7 @@ Map { property variant mapItems property int markerCounter: 0 // counter for total amount of markers. Resets to 0 when number of markers = 0 property int mapGeoItemsCounter: 0 // counter for total amount of mapItems. Resets to 0 when number of markers = 0 - // property Marker currentMarker + property Marker currentMarker signal mapPressed() // replace with // signal mousePressed(MouseEvent mouse) when QTBUG-14550 is fixed @@ -68,6 +68,7 @@ Map { property int jitterThreshold : 10 property bool followme: false property variant scaleLengths: [5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000] + signal showDistance(string distance); Coordinate { id: brisbaneCoordinate @@ -517,25 +518,37 @@ Map { y: 0 onClicked: { map.state = "" - /* switch (button) { + switch (button) { case "Delete": {//remove marker map.removeMarker(currentMarker) break; } - case "Move to": {//move marker - map.moveMarker() + case "Delete All": {//remove all markers + map.deleteMarkers() break; } +// case "Move to": {//move marker +// map.moveMarker() +// break; +// } case "Coordinates": {//show marker's coordinates map.coordinatesCaptured(currentMarker.coordinate.latitude, currentMarker.coordinate.longitude) break; } case "Route to next points"://calculate route case "Route to next point": { - map.calculateRoute(currentMarker) +// map.calculateRoute(currentMarker) break; } - }*/ + case "Distance to next point": { + var count = map.markers.length + for (var i = 0; i<count; i++) { + if (currentMarker == map.markers[i]) + showDistance(formatDistance(currentMarker.coordinate.distanceTo(map.markers[i+1].coordinate))); + } + break; + } + } } } @@ -851,7 +864,6 @@ Map { } } - /* function removeMarker(marker){ //update list of markers var myArray = new Array() @@ -860,29 +872,32 @@ Map { if (marker != map.markers[i]) myArray.push(map.markers[i]) } - map.removeMapObject(marker) + map.removeMapItem(marker) marker.destroy() map.markers = myArray - if (markers.length == 0) counter = 0 + if (markers.length == 0) markerCounter = 0 } - function markerLongPress(){ + function markerPopup(){ var array var count = map.markers.length markerMenu.clear() - markerMenu.addItem("Delete") - markerMenu.addItem("Move to") markerMenu.addItem("Coordinates") - if ((currentMarker != markers[count-1]) && (count > 2)) - if (currentMarker == markers[count-2]) markerMenu.addItem("Route to next point") - else markerMenu.addItem("Route to next points") - } - else markerMenu.addItem("Route to next point") - +// if ((currentMarker != markers[count-1]) && (count > 2)) { +// if (currentMarker == markers[count-2]) markerMenu.addItem("Route to next point") +// else markerMenu.addItem("Route to next points") +// } +// else markerMenu.addItem("Route to next point") + if (currentMarker != markers[count-1]) + markerMenu.addItem("Distance to next point") + markerMenu.addItem("Delete") + if (count > 1) + markerMenu.addItem("Delete All") +// markerMenu.addItem("Move to") map.state = "MarkerPopupMenu" } - +/* function calculateRoute(marker){ routeQuery.clearWaypoints(); var startPointFound = false diff --git a/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml b/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml index 43ba0b43..fe46f350 100644 --- a/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml +++ b/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml @@ -44,6 +44,8 @@ import "../components" MapQuickItem { //to be used inside MapComponent only id: marker + property alias lastMouseX: markerMouseArea.lastX + property alias lastMouseY: markerMouseArea.lastY anchorPoint.x: image.width/4 anchorPoint.y: image.height @@ -54,6 +56,11 @@ MapQuickItem { //to be used inside MapComponent only source: markerMouseArea.containsMouse ? (markerMouseArea.pressed ? "../resources/marker_selected.png" :"../resources/marker_hovered.png") : "../resources/marker.png" MapMouseArea { id: markerMouseArea + property int pressX : -1 + property int pressY : -1 + property int jitterThreshold : 10 + property int lastX: -1 + property int lastY: -1 anchors.fill: parent hoverEnabled : true drag.target: marker @@ -63,6 +70,21 @@ MapQuickItem { //to be used inside MapComponent only drag.minimumY: -map.toScreenPosition(marker.coordinate).y drag.maximumY: map.height + drag.minimumY + onPressed : { + map.pressX = mouse.x + map.pressY = mouse.y + map.currentMarker = marker + map.state = "" + } + + onPressAndHold:{ + if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold + && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) { + lastX = map.toScreenPosition(marker.coordinate).x + lastY = map.toScreenPosition(marker.coordinate).y + map.markerPopup() + } + } // onReleased:{ // console.log("drag: implement me") // } diff --git a/examples/declarative/mapviewer/mapviewer/mapviewer.qml b/examples/declarative/mapviewer/mapviewer/mapviewer.qml index 774ef5de..a91fcc5f 100644 --- a/examples/declarative/mapviewer/mapviewer/mapviewer.qml +++ b/examples/declarative/mapviewer/mapviewer/mapviewer.qml @@ -236,6 +236,10 @@ Item { name: "LocationInfo" PropertyChanges { target: messageDialog; title: "Location" } PropertyChanges { target: messageDialog; text: geocodeMessage() } + }, + State{ + name: "Distance" + PropertyChanges { target: messageDialog; title: "Distance" } } ] } @@ -534,6 +538,11 @@ Item { else if (map.geocodeModel.status == GeocodeModel.Error) {messageDialog.state = "GeocodeError";}\ page.state = "Message";\ }\ + onShowDistance:{\ + messageDialog.state = "Distance";\ + messageDialog.text = "<b>Distance:</b> " + distance;\ + page.state = "Message";\ + }\ }',page) map.plugin = plugin } |