Código HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset=utf-8> <title>I am here</title> <!-- Google Maps version --> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <!-- OpenStreetMap + Leaflet.js version --> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css" /> <script src="http://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js"></script> </head> <body> <h1>I was here on <span id="date">…</span></h1> <p>(last known position where I had a GPS signal, a network connection, and some battery power)</p> <h2>Google Maps version</h2> <div id="googlemap" style="width: 800px; height: 600px"> <div id="interlude" style="text-align: center; line-height: 600px; font-weight: bold; border: 1px dotted grey; background-color: #eee;"> Map currently unavailable. </div> </div> <h2>OpenStreetMap + Leaflet.js version</h2> <div id="openstreetmap" style="width: 800px; height: 600px"> <div id="interlude" style="text-align: center; line-height: 600px; font-weight: bold; border: 1px dotted grey; background-color: #eee;"> Map currently unavailable. </div> </div> <script> var gmap, gmarker; var osmap, osmarker; var dte, lat, lon, utc; function createGMap() { var latlng = new google.maps.LatLng(lat, lon); var myOptions = { zoom: 12, center: latlng, mapTypeControl: false, navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, mapTypeId: google.maps.MapTypeId.ROADMAP }; gmap = new google.maps.Map(document.getElementById("googlemap"), myOptions); gmarker = new google.maps.Marker({ position: latlng, map: gmap, title:"I'm here" }); google.maps.event.addListener(gmarker, "click", function(e) { alert("GPS coordinates:\nLatitude: " + gmarker.getPosition().lat() + "\nLongitude: " + gmarker.getPosition().lng()); }); } function createOSMap() { osmap = L.map('openstreetmap').setView([lat, lon], 12); L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(osmap); osmarker = L.marker([lat, lon]); osmarker .addTo(osmap) .bindPopup("<p>GPS coordinates :</p><p>" + lat + ", " + lon + "</p>"); } function updateGMap() { var latlng = new google.maps.LatLng(lat, lon); gmarker.setPosition(latlng); gmap.panTo(latlng); } function updateOSMap() { osmarker.setLatLng([lat, lon]); osmarker.bindPopup("<p>GPS coordinates :</p><p>" + lat + ", " + lon + "</p>"); osmap.panTo([lat, lon]); } function doRefresh() { var xhr; try { xhr = new XMLHttpRequest(); } catch (e) { xhr = false; } xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { var param = xhr.responseText.split('_'); dte = param[0]; lat = param[1]; lon = param[2]; utc = param[3]; if (dte && lat && lon) { if (!gmap) { createGMap(); } else { updateGMap(lat, lon); } if (!osmap) { createOSMap(); } else { updateOSMap(); } if (utc) { utc_dte = new Date(parseInt(utc)); document.querySelector("#date").innerHTML = utc_dte.toLocaleString(); } else { document.querySelector("#date").innerHTML = dte + " (server time)"; } } } } }; xhr.open("GET", "i-am-here-position.php?" + Math.random(), true); xhr.send(null); setTimeout('doRefresh()', 30000); } doRefresh(); </script>
También se me ocurre que se podría aprovechar la variable latlng (que está definida por la latitud y longitud obtenida mediante geoposicionamiento en el terminal android), para ser introducida en una url y abrir esta en una ventana aparte. Por ejemplo, introducir los valores de la variable latlng (es decir, la última latitud y langitud enviada por el móvil) en una url de este tipo: https://www.google.es/maps/dir/37.4204828,-1.5539009/"latitud y longitud extraidas de geoposicionamiento" para abrir en maps la ruta en la cual se visualiza el tiempo de llegada.
Gracias y un saludo.