Hola a tod@s. Estoy realizando unas pruebas con [URL="https://github.com/herverenault/Self-Hosted-GPS-Tracker"]"Self-hosted-gps-tracker"[/URL] y la verdad es que funciona bastante bien. Envio las coordenadas desde android al servidor, las almaceno en un fichero.txt y luego las extraigo mediante php para mostrarlas en un mapa (puede ser osm / google maps... etc). Este es el código que utilizo:
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>
La cuestión es que me gustaría saber la manera de lograr averiguar el tiempo de llegada respecto al último punto geolocalizado y otro marcador en el mapa y mostrarlo ¿alguien sabe como hacerlo?
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.