Foros del Web » Programando para Internet » Javascript »

Calcular tiempo estimado de llegada

Estas en el tema de Calcular tiempo estimado de llegada en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/11/2015, 18:51
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 1
Calcular tiempo estimado de llegada

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: '&copy; <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.
  #2 (permalink)  
Antiguo 30/03/2016, 06:32
 
Fecha de Ingreso: marzo-2016
Ubicación: lima
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Respuesta: Calcular tiempo estimado de llegada

Hola, yo recien estoy implementando esta parte de Self-Hosted-GPS-Tracker la aplicacion en el android, pero tengo problemas, estoy colocando el servidor en mi caso: http://marmatcourier.com/gpstracker/gps.php , pero no me envia ningun dato a mi servidor web, en el archuivo gps.php hay _GET para extraer los datos, pero no me funciona, no se si he hecho mal en configurar la ruta de mi servidor web en el aplicativo?, te comento esto porque veo que pones que a ti si te salio, favor ayudame, gracias

este es mi codigo de gps.php:

<?php
// THIS IS ONLY A SAMPLE SCRIPT. PLEASE TWEAK IT TO YOUR NEEDS.
// IT COMES WITH NO WARRANTY WHATSOEVER.
$file = "/tmp/gps-position.txt"; // you might save in a database instead...
if (isset($_GET["lat"]) && preg_match("/^-?\d+\.\d+$/", $_GET["lat"])
&& isset($_GET["lon"]) && preg_match("/^-?\d+\.\d+$/", $_GET["lon"]) ) {
$fh = fopen($file, "w");
if (!$fh) {
header("HTTP/1.0 500 Internal Server Error");
exit(print_r(error_get_last(), true));
}
fwrite($fh, date("Y-m-d H:i:s")."_".$_GET["lat"]."_".$_GET["lon"]."_");
if (isset($_GET["t"]) && preg_match("/^\d+$/", $_GET["t"])) {
fwrite($fh, $_GET["t"]);
}
fclose($fh);
// you should obviously do your own checks before this...
echo "OK";
} elseif (isset($_GET["tracker"])) {
// do whatever you want here...
echo "OK";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Please type this URL in the <a href="https://play.google.com/store/apps/details?id=fr.herverenault.selfhostedgpstracker">S elf-Hosted GPS Tracker</a> Android app on your phone.';
}

Etiquetas: api, google, maps
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.