diff options
author | Timo Ojala <timo.ojala@digia.com> | 2011-11-24 17:26:19 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-25 00:17:09 +0100 |
commit | 20f954225e33494e1f8434119de87dd219bef0a4 (patch) | |
tree | 8690df879d31cb30962d5fe7a73792288b5581e6 /examples/declarative/mapviewer | |
parent | 77ebe040ce5ac1b2992c24a1d4190796defc9ca8 (diff) | |
download | qtlocation-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.qml | 48 |
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 } /* |