remove debug message
[lantea.git] / js / map.js
index 1ce622642e52fe54dd09aeacdd42695381f0cb95..221808094d238bfb89059ca9bf5a451282f17b0e 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -388,7 +388,7 @@ var mapEvHandler = {
   }
 };
 
   }
 };
 
-geofake = {
+var geofake = {
   tracking: false,
   watchPosition: function(aSuccessCallback, aErrorCallback, aPrefObject) {
     this.tracking = true;
   tracking: false,
   watchPosition: function(aSuccessCallback, aErrorCallback, aPrefObject) {
     this.tracking = true;
@@ -409,18 +409,41 @@ geofake = {
 }
 
 function startTracking() {
 }
 
 function startTracking() {
+  var loopCnt = 0;
+  var getStoredTrack = function() {
+    if (mainDB)
+      gTrackStore.getList(function(aTPoints) {
+        //document.getElementById("debug").textContent = aTPoints.length + " points loaded.";
+        if (aTPoints.length) {
+          gTrack = aTPoints;
+        }
+      });
+    else
+      setTimeout(getStoredTrack, 100);
+    loopCnt++;
+    if (loopCnt > 20)
+      return;
+  };
+  getStoredTrack();
   if (navigator.geolocation) {
     //gGeoWatchID = geofake.watchPosition(
     gGeoWatchID = navigator.geolocation.watchPosition(
       function(position) {
         // Coords spec: https://developer.mozilla.org/en/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords
   if (navigator.geolocation) {
     //gGeoWatchID = geofake.watchPosition(
     gGeoWatchID = navigator.geolocation.watchPosition(
       function(position) {
         // Coords spec: https://developer.mozilla.org/en/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords
-        gTrack.push({time: position.timestamp, coords: position.coords});
+        var tPoint = {time: position.timestamp,
+                      coords: position.coords,
+                      beginSegment: !gLastTrackPoint};
+        gTrack.push(tPoint);
+        gTrackStore.push(tPoint);
         drawTrackPoint(position.coords.latitude, position.coords.longitude);
         if (gCenterPosition) {
           var posCoord = gps2xy(position.coords.latitude, position.coords.longitude);
         drawTrackPoint(position.coords.latitude, position.coords.longitude);
         if (gCenterPosition) {
           var posCoord = gps2xy(position.coords.latitude, position.coords.longitude);
-          gPos.x = posCoord.x;
-          gPos.y = posCoord.y;
-          drawMap();
+          if (Math.abs(gPos.x - posCoord.x) > gCanvas.width * gZoomFactor / 4 ||
+              Math.abs(gPos.y - posCoord.y) > gCanvas.height * gZoomFactor / 4) {
+            gPos.x = posCoord.x;
+            gPos.y = posCoord.y;
+            drawMap();
+          }
         }
       },
       function(error) {
         }
       },
       function(error) {
@@ -438,3 +461,9 @@ function endTracking() {
     navigator.geolocation.clearWatch(gGeoWatchID);
   }
 }
     navigator.geolocation.clearWatch(gGeoWatchID);
   }
 }
+
+function clearTrack() {
+  gTrack = [];
+  gTrackStore.clear();
+  drawMap();
+}