remove debug message
[lantea.git] / js / map.js
index 3c12015f01d31f1161abd191c682fc8290473ee1..221808094d238bfb89059ca9bf5a451282f17b0e 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -84,6 +84,7 @@ var gZoomTouchID;
 var gGeoWatchID;
 var gTrack = [];
 var gLastTrackPoint;
+var gCenterPosition = true;
 
 function initMap() {
   gCanvas = document.getElementById("map");
@@ -387,7 +388,7 @@ var mapEvHandler = {
   }
 };
 
-geofake = {
+var geofake = {
   tracking: false,
   watchPosition: function(aSuccessCallback, aErrorCallback, aPrefObject) {
     this.tracking = true;
@@ -408,13 +409,42 @@ geofake = {
 }
 
 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
-        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);
+          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) {
         // Ignore erros for the moment, but this is good for debugging.
@@ -431,3 +461,9 @@ function endTracking() {
     navigator.geolocation.clearWatch(gGeoWatchID);
   }
 }
+
+function clearTrack() {
+  gTrack = [];
+  gTrackStore.clear();
+  drawMap();
+}