add a first version of a library view into Lantea
[lantea.git] / js / map.js
index dcb40a3a17bc9f8c55c9e00ac2c1c4983bc12b00..b63aea5fe1272ffd773cc4464cc02781765b6e4b 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -88,7 +88,7 @@ var gMapPrefsLoaded = false;
 var gDragging = false;
 var gDragTouchID, gPinchStartWidth;
 
-var gGeoWatchID;
+var gGeoWatchID, gGPSWakeLock;
 var gTrack = [];
 var gLastTrackPoint, gLastDrawnPoint;
 var gCenterPosition = true;
@@ -861,12 +861,12 @@ var mapEvHandler = {
 
       // Bail out if the started touch can't be found.
       if (touchEvent && gDragging &&
-          !aEvent.changedTouches.identifiedTouch(gDragTouchID))
+          !aEvent.targetTouches.item(0))
         return;
     }
 
     var coordObj = touchEvent ?
-                   aEvent.changedTouches.identifiedTouch(gDragTouchID) :
+                   aEvent.targetTouches.item(0) :
                    aEvent;
 
     switch (aEvent.type) {
@@ -881,8 +881,7 @@ var mapEvHandler = {
                          aEvent.targetTouches.item(0).clientY, 2)
             );
           }
-          gDragTouchID = aEvent.changedTouches.item(0).identifier;
-          coordObj = aEvent.changedTouches.identifiedTouch(gDragTouchID);
+          coordObj = aEvent.targetTouches.item(0);
         }
         var x = coordObj.clientX - gGLMapCanvas.offsetLeft;
         var y = coordObj.clientY - gGLMapCanvas.offsetTop;
@@ -1132,6 +1131,9 @@ function startTracking() {
   if (gGeolocation) {
     gActionLabel.textContent = "Establishing Position";
     gAction.style.display = "block";
+    if (navigator.requestWakeLock) {
+      gGPSWakeLock = navigator.requestWakeLock("gps");
+    }
     gGeoWatchID = gGeolocation.watchPosition(
       function(position) {
         if (gActionLabel.textContent) {
@@ -1187,6 +1189,10 @@ function endTracking() {
     gActionLabel.textContent = "";
     gAction.style.display = "none";
   }
+  if (navigator.requestWakeLock && gGPSWakeLock) {
+    console.log("releasing WakeLock");
+    gGPSWakeLock.unlock();
+  }
   if (gGeoWatchID) {
     gGeolocation.clearWatch(gGeoWatchID);
   }