fix setting of var
[lantea.git] / js / map.js
index ce664298e6c478fd3c08576f26b99fe7565c87ac..e0f0a39708ae98a301b02bddb4281c0af884455c 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -3,7 +3,7 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var gMapCanvas, gMapContext, gTrackCanvas, gTrackContext, gGeolocation;
-var gDebug = false;
+var gDebug = true;
 
 var gTileSize = 256;
 var gMaxZoom = 18; // The minimum is 0.
@@ -162,14 +162,17 @@ function loadPrefs(aEvent) {
       gAction.dispatchEvent(throwEv);
     });
     gWaitCounter++;
-    var trackLoadStarted = false;
+    var trackLoadStarted = false, 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,7 +515,9 @@ var mapEvHandler = {
               Math.pow(aEvent.targetTouches.item(1).clientY -
                        aEvent.targetTouches.item(0).clientY, 2)
           );
-          console.log(gPinchStartWidth + ' <?> ' + curPinchStartWidth);
+          if (!gPinchStartWidth)
+            gPinchStartWidth = curPinchStartWidth;
+
           if (gPinchStartWidth / curPinchStartWidth > 1.7 ||
               gPinchStartWidth / curPinchStartWidth < 0.6) {
             var newZoomLevel = gPos.z + (gPinchStartWidth < curPinchStartWidth ? 1 : -1);
@@ -536,8 +541,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;
@@ -568,6 +577,7 @@ var mapEvHandler = {
         break;
       case "mouseup":
       case "touchend":
+        gPinchStartWidth = null;
         gDragging = false;
         showUI();
         break;