changeset 273:f8aa8534b951 gmap2

More work .. fixed error handling somewhat.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 14 Apr 2014 03:01:00 +0300
parents a66d849006f2
children 43e8493891ed
files map.js
diffstat 1 files changed, 41 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/map.js	Mon Apr 14 02:36:45 2014 +0300
+++ b/map.js	Mon Apr 14 03:01:00 2014 +0300
@@ -10,7 +10,7 @@
 
 var pmapPlrPrevPos = {"x": 8192, "y": 8192};
 var pmapPlrMarker, pmapPlrToken, pmapPlrName;
-var pmapUpdateTime, pmapUpdateDelay, pmapUpdateFails = 0;
+var pmapUpdateDelay, pmapUpdateFails = 0;
 
 
 function pmapMinMax(vval, vmin, vmax)
@@ -130,9 +130,8 @@
 
       pmapPlrToken = args.token;
       pmapPlrName = args.name;
-      pmapUpdateTime = Date.now();
-      pmapUpdateDelay = 0;
-      pmapUpdatePID = setInterval("pmapUpdatePlayerPosition()", 500);
+      pmapUpdateDelay = 1000;
+      pmapScheduleNextUpdate();
     }
   }
 
@@ -196,10 +195,9 @@
 }
 
 
-function pmapStopPlayerUpdate(msg)
+function pmapScheduleNextUpdate()
 {
-  clearInterval(pmapUpdatePID);
-  alert("An error occured: "+ msg);
+  setTimeout("pmapUpdatePlayerPosition()", pmapUpdateDelay);
 }
 
 
@@ -213,52 +211,49 @@
 
 function pmapUpdatePlayerPosition()
 {
-  if (Date.now() - pmapUpdateTime >= pmapUpdateDelay)
+  XDownloadUrl("http://tnsp.org/gmapng/playerpos.php?name="+pmapPlrName+"&token="+pmapPlrToken,
+  function(data, responseCode)
   {
-    pmapUpdateTime = Date.now();
-    XDownloadUrl("http://tnsp.org/gmapng/playerpos.php?name="+pmapPlrName+"&token="+pmapPlrToken,
-    function(data, responseCode)
+    // Check response for type
+    pmapUpdateFails = 0;
+    if (typeof(data) == "string")
     {
-      // Check response for type
-      pmapUpdateFails = 0;
-      if (typeof(data) == "string")
+      // Check response
+      if (dmatches = data.match(/^Error: (.*)$/))
       {
-        // Check response
-        if (dmatches = data.match(/^Error: (.*)$/))
+        alert("An error occured: "+ dmatches[1]);
+        return false;
+      }
+      else
+      if (dmatches = data.match(/{[A-Za-z0-9\'\":, ]+}/))
+      {
+        var pos = JSON.parse(dmatches[0]);
+        if (typeof(pos) == "object" && (pos.x != pmapPlrPrevPos.x || pos.y != pmapPlrPrevPos.y))
         {
-          pmapStopPlayerUpdate(dmatches[1]);
-          return;
+          pmapPlrMarker.setPosition(pmapMapCoordsToLatLng(new google.maps.Point(pos.x * 2 + 1, pos.y * 2 + 1), 7));
+          pmap.panTo(pmapMapCoordsToLatLng(new google.maps.Point(pos.x, pos.y), 6));
+          pmapPlrPrevPos = pos;
+          pmapUpdateDelay = 500;
         }
         else
-        if (dmatches = data.match(/{[A-Za-z0-9\'\":, ]+}/))
-        {
-          var pos = JSON.parse(dmatches[0]);
-          if (typeof(pos) == "object" && (pos.x != pmapPlrPrevPos.x || pos.y != pmapPlrPrevPos.y))
-          {
-            pmapPlrMarker.setPosition(pmapMapCoordsToLatLng(new google.maps.Point(pos.x * 2 + 1, pos.y * 2 + 1), 7));
-            pmap.panTo(pmapMapCoordsToLatLng(new google.maps.Point(pos.x, pos.y), 6));
-            pmapPlrPrevPos = pos;
-            pmapUpdateDelay = 500;
-          }
-          else
-            // Position not changed, increase update delay
-            pmapIncreaseUpdateDelay(500);
-        }
-        else
-        // Not a position update, increase update delay
-          pmapIncreaseUpdateDelay(1000);
+          // Position not changed, increase update delay
+          pmapIncreaseUpdateDelay(500);
       }
       else
-        pmapUpdateDelay = 10000;
-    },
-    function()
-    {
+      // Not a position update, increase update delay
+        pmapIncreaseUpdateDelay(1000);
+    }
+    else
       pmapUpdateDelay = 10000;
-      if (pmapUpdateFails++ > 5)
-      {
-        pmapStopPlayerUpdate("Server failed to respond");
-        return;
-      }
-    });
-  }
+
+    pmapScheduleNextUpdate();
+  },
+  function()
+  {
+    pmapUpdateDelay = 10000;
+    if (pmapUpdateFails++ > 5)
+      alert("An error occured: Server failed to respond.");
+    else
+      pmapScheduleNextUpdate();
+  });
 }