summaryrefslogtreecommitdiff
path: root/examples/declarative/mapviewer
diff options
context:
space:
mode:
authorTimo Ojala <timo.ojala@digia.com>2011-11-24 17:26:19 +0200
committerQt by Nokia <qt-info@nokia.com>2011-11-25 00:17:09 +0100
commit20f954225e33494e1f8434119de87dd219bef0a4 (patch)
tree8690df879d31cb30962d5fe7a73792288b5581e6 /examples/declarative/mapviewer
parent77ebe040ce5ac1b2992c24a1d4190796defc9ca8 (diff)
downloadqtlocation-20f954225e33494e1f8434119de87dd219bef0a4.tar.gz
Changed mapviewer scale to snap to round values, lazy scale updates
* Mapviewer scale now snaps to round values. Scale line length is now variable. * Changed mapviewer scale to update after a delay, not at every signal. Change-Id: I673bc0c7211fae7f37b85ff83e04d8d744b2b368 Reviewed-by: Cristian Adam <cristian.adam@nokia.com> Reviewed-by: Natalia Shubina <natalia.shubina@nokia.com>
Diffstat (limited to 'examples/declarative/mapviewer')
-rw-r--r--examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml48
1 files changed, 40 insertions, 8 deletions
diff --git a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
index d3dd9b3e..318f4a3f 100644
--- a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
+++ b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
@@ -64,6 +64,7 @@ Map {
property int lastX : -1
property int lastY : -1
property bool followme: false
+ property variant scaleLengths: [10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000]
Coordinate {
id: brisbaneCoordinate
@@ -417,32 +418,44 @@ Map {
id: scaleText
color: "#004EAE"
horizontalAlignment: Text.AlignHCenter
- width: scaleImage.sourceSize.width
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.bottomMargin: 3
- text:calculateScale()
+ text: "0 m"
font.pixelSize: 14
}
+ Component.onCompleted: {
+ map.calculateScale();
+ }
+ }
+
+ Timer {
+ id: scaleTimer
+ interval: 100
+ running: false
+ repeat: false
+ onTriggered: {
+ map.calculateScale()
+ }
}
onCenterChanged:{
- scaleText.text = calculateScale()
+ scaleTimer.restart()
if (map.followme)
if (map.center != positionSource.position.coordinate) map.followme = false
}
onZoomLevelChanged:{
- scaleText.text = map.calculateScale()
+ scaleTimer.restart()
if (map.followme) map.center = positionSource.position.coordinate
}
onWidthChanged:{
- scaleText.text = map.calculateScale()
+ scaleTimer.restart()
}
onHeightChanged:{
- scaleText.text = map.calculateScale()
+ scaleTimer.restart()
}
Menu {
@@ -652,12 +665,31 @@ Map {
}
function calculateScale(){
- var coord1, coord2, dist, text
+ var coord1, coord2, dist, text, f
+ f = 0
coord1 = map.toCoordinate(Qt.point(0,scale.y))
coord2 = map.toCoordinate(Qt.point(0+scaleImage.sourceSize.width,scale.y))
dist = Math.round(coord1.distanceTo(coord2))
+
+ if (dist === 0) {
+ // not visible
+ } else {
+ for (var i = 0; i < scaleLengths.length-1; i++) {
+ if (dist < (scaleLengths[i] + scaleLengths[i+1]) / 2 ) {
+ f = dist / scaleLengths[i]
+ dist = scaleLengths[i]
+ break;
+ }
+ }
+ if (f === 0) {
+ f = dist / scaleLengths[i]
+ dist = scaleLengths[i]
+ }
+ }
+
text = formatDistance(dist)
- return text
+ scaleImage.width = scaleImage.sourceSize.width * f
+ scaleText.text = text
}
/*