X-Git-Url: https://git-public.kairo.at/?p=lantea.git;a=blobdiff_plain;f=js%2Fmap.js;h=221808094d238bfb89059ca9bf5a451282f17b0e;hp=1ce622642e52fe54dd09aeacdd42695381f0cb95;hb=4c13fe0c682d92455ec29a8903912ade594e3043;hpb=05c217570b27ee69eaa73af8b88383955c56bde8 diff --git a/js/map.js b/js/map.js index 1ce6226..2218080 100644 --- 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; @@ -409,18 +409,41 @@ 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); - 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) { @@ -438,3 +461,9 @@ function endTracking() { navigator.geolocation.clearWatch(gGeoWatchID); } } + +function clearTrack() { + gTrack = []; + gTrackStore.clear(); + drawMap(); +}