Tengo este codigo para calcular la distancia entre dos puntos dadas sus coordenadas:
Código:
EL problema que tengo es que no puedo asignarlo a la caja de texto de la distancia, para que me muestre el resultado, probe con la funcion onChange y no lo asigna, espero me puedan ayudar. Saludos..<script type="text/javascript"> var lat1 = parseFloat(document.forms[0].ld1.value); var lon1 = parseFloat(document.forms[0].lod1.value); var lat2 = parseFloat(document.forms[0].ld2.value); var lon2 = parseFloat(document.forms[0].lod2.value); Distancia = Dist(lat1, lon1, lat2, lon2); //Retorna numero en Km function Dist(lat1, lon1, lat2, lon2) { rad = function(x) {return x*Math.PI/180;} var R = 6378.137; //Radio de la tierra en km var dLat = rad( lat2 - lat1 ); var dLong = rad( lon2 - lon1 ); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(lat1)) * Math.cos(rad(lat2)) * Math.sin(dLong/2) * Math.sin(dLong/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d.toFixed(3); //Retorna tres decimales document.forms[0].dist.value = d; } </script> </head> <body> <form id="form1" name="form1" method="post" action="dist.php"> <p>Latitud 1: <input type="text" name="l1" id="l1" onkeyup="latitud(this.value)" /> <input type="text" name="ld1" id="ld1" readonly="readonly" onChange="Dist(this.value);"/> Longitud 1: <input type="text" name="lo1" id="lo1" onkeyup="longitud(this.value)" /> <input type="text" name="lod1" id="lod1" readonly="readonly" onChange="Dist(this.value);"/> </p> <p>Latitud 2: <input type="text" name="l2" id="l2" onkeyup="latitud2(this.value)" /> <input type="text" name="ld2" id="l4" readonly="readonly" onChange="Dist(this.value);"/> Longitud 2: <input type="text" name="lo2" id="lo2" onkeyup="longitud2(this.value)" /> <input type="text" name="lod2" id="lo4" readonly="readonly" onChange="Dist(this.value);"/></p> <p>Distancia: <input type="text" name="dist" id="dist"/> </p> <p> <input type="submit" name="enviar" id="enviar" value="Enviar" /> </p> </form>
PD: Si se debe mover el post, por favor notifiquenme...