independet var assignments
[lantea.git] / js / map.js
index 2ecd3a4de86574dcf6e0cc1dc3d7a4e711ccbc4e..5c93ae5741dbf71885253461fbe3e7b6e2a4cd32 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -163,13 +163,17 @@ function loadPrefs(aEvent) {
     });
     gWaitCounter++;
     var trackLoadStarted = false;
+    var redrawBase = 100;
     gTrackStore.getListStepped(function(aTPoint) {
       if (aTPoint) {
         // Add in front and return new length.
         var tracklen = gTrack.unshift(aTPoint);
-        // Redraw track every 100 values (initial paint will do first anyhow).
-        if (tracklen % 100 == 0)
+        // Redraw track periodically, larger distance the longer it gets.
+        // Initial paint will do initial track drawing.
+        if (tracklen % redrawBase == 0) {
           drawTrack();
+          redrawBase = tracklen;
+        }
       }
       else {
         // Last point received.
@@ -512,6 +516,9 @@ var mapEvHandler = {
               Math.pow(aEvent.targetTouches.item(1).clientY -
                        aEvent.targetTouches.item(0).clientY, 2)
           );
+          if (!gPinchStartWidth)
+            gPinchStartWidth = curPinchStartWidth;
+
           if (gPinchStartWidth / curPinchStartWidth > 1.7 ||
               gPinchStartWidth / curPinchStartWidth < 0.6) {
             var newZoomLevel = gPos.z + (gPinchStartWidth < curPinchStartWidth ? 1 : -1);
@@ -535,8 +542,12 @@ var mapEvHandler = {
                 zoomIn();
               else
                 zoomOut();
+
+              // Reset pinch start width and start another pinch gesture.
+              gPinchStartWidth = null;
             }
           }
+          // If we are in a pinch, do not drag.
           break;
         }
         var x = coordObj.clientX - gMapCanvas.offsetLeft;
@@ -567,6 +578,7 @@ var mapEvHandler = {
         break;
       case "mouseup":
       case "touchend":
+        gPinchStartWidth = null;
         gDragging = false;
         showUI();
         break;