// Map Setup var map = new GMap(document.getElementById("map")); map.centerAndZoom(new GPoint(0,0), 1); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); var lastmarker = new GMarker (new GPoint(0,0)); map.addOverlay (lastmarker); var showmark = 0; var reversegeocoder = new GReverseGeocoder(map); GEvent.addListener(reversegeocoder, "load", function(placemark) { document.getElementById("locationName").innerHTML=placemark.address; } ); function setmark(a) { showmark = a; refreshMap(map, 0); } // Refresh map function function refreshMap(map, myrefresh) { document.getElementById("loading").innerHTML="  Retrieving data...  "; // AJAX XML Data Download and marker placement, straight // from Google API documentation var request = GXmlHttp.create(); request.open("GET", "../data.php?id="+deviceid+"&sharingcode="+sharingcode+"&RANDOM=."+Math.random(), true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; var markers = xmlDoc.documentElement.getElementsByTagName("marker"); var mytime; for (var a = 0; a <= (markers.length -1); a++) { if (parseInt(markers[a].getAttribute("minsago")) > 59) { var myhours = parseInt(parseInt(markers[a].getAttribute("minsago")) / 60); if (myhours > 24) { var mydays = parseInt(myhours / 24); myhours = parseInt(parseInt(parseInt(markers[a].getAttribute("minsago")) / 60) - (mydays * 24)); var myminutes = (parseInt(markers[a].getAttribute("minsago")) - (60 * (myhours + (mydays * 24)))); if (myminutes < 10) myminutes = "0"+myminutes; mytime = " " + mydays + "d " + myhours + "h " + myminutes + " minutes ago"; } else { var myminutes = (parseInt(markers[a].getAttribute("minsago")) - (60 * myhours)); if (myminutes < 10) myminutes = "0"+myminutes; mytime = " " + myhours + "h " + myminutes + " minutes ago"; } } else { mytime = " " + parseInt(markers[a].getAttribute("minsago")) + " minutes ago"; } if (showmark == a) { //document.getElementById("marker"+a).innerHTML = ""+parseInt(markers[a].getAttribute("minsago"))+" minutes ago
"; document.getElementById("marker"+a).innerHTML = ""+mytime+"
"; } else { //document.getElementById("marker"+a).innerHTML = ""+parseInt(markers[a].getAttribute("minsago"))+" minutes ago
"; document.getElementById("marker"+a).innerHTML = ""+mytime+"
"; } } //for (var i = 0; i <= markers.length; i++) { var i = showmark; if (markers[i]) { var point = new GPoint(parseFloat(markers[i].getAttribute("lng")), parseFloat(markers[i].getAttribute("lat"))); var speed = parseInt(markers[i].getAttribute("speed")); if (speed < 0) { document.getElementById("speed").innerHTML="Unknown "; } else { document.getElementById("speed").innerHTML=speed; } document.getElementById("accuracy").innerHTML=parseInt(markers[i].getAttribute("accuracy")); document.getElementById("lastupdate").innerHTML=markers[i].getAttribute("date"); //document.getElementById("lastmins").innerHTML=parseInt(markers[i].getAttribute("minsago")); document.getElementById("lastmins").innerHTML=parseInt(markers[i].getAttribute("minsago")); //document.getElementById("lastconnect").innerHTML=parseInt(markers[i].getAttribute("lastconnect")); // Sets a marker to the last point added in the database var marker = new GMarker(point); if (parseFloat(markers[i].getAttribute("lat")) + parseFloat(markers[i].getAttribute("lng")) != lastmarker) { reversegeocoder = new GReverseGeocoder(map); GEvent.addListener(reversegeocoder, "load", function(placemark) { document.getElementById("locationName").innerHTML=placemark.address; } ); reversegeocoder.reverseGeocode(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")))); //map.centerAtLatLng(point); map.panTo(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")))); map.clearOverlays(); map.addOverlay(marker); map.addOverlay(GPolyline.Circle(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))),markers[i].getAttribute("accuracy"))); } lastmarker = parseFloat(markers[i].getAttribute("lat")) + parseFloat(markers[i].getAttribute("lng")); } // Recenters map to last point added //map.centerAtLatLng(point); } } request.send(null); window.setTimeout(function(){ document.getElementById("loading").innerHTML="";},500); // Reloads map every 6 seconds if (GPSstatus == 1 && myrefresh == 1) { window.setTimeout(function(){ refreshMap(map,1)},6000); } }