X-Git-Url: https://git-public.kairo.at/?p=lantea.git;a=blobdiff_plain;f=js%2Fmap.js;h=221808094d238bfb89059ca9bf5a451282f17b0e;hp=3c12015f01d31f1161abd191c682fc8290473ee1;hb=4c13fe0c682d92455ec29a8903912ade594e3043;hpb=55c4a0b7df4ca84d3d2fb6c6e294b0b75751b6ed diff --git a/js/map.js b/js/map.js index 3c12015..2218080 100644 --- 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(); +}