En mi trabajo manejamos un mapa que esta dividido en cuadrantes o cuadriculas, el tamaño de estas cuadriculas es de 5x5, como se observa en la siguiente imagen:
El proceso para determinar en que cuadrante se ubica cada coordenada se realiza totalmente a mano, de la siguiente manera: Se toman solo los grados de cada coordenada, posteriormente se ubican en los ejes X e Y y con una regla se trazan las dos lineas, y desde el punto donde se intersectan se ubica dicho cuadrante. Este proceso se realiza a todas las bitacoras de pesca que se registran en el año (este año pasado se registraron cerca de 450 bitacoras entre todas las flotas pesqueras), estas se registran en Excel, y de ahi se comienza el largo proceso para los diferentes informes que se presentan a final de año; mi idea fue realizar un formulario de prueba donde se registren solo las coordenadas geograficas, posteriormente me hace el calculo en numero decimal y lo asigna a una caja de texto, hasta ahi todo esta bien. Para poder asignar los cuadrantes a las coordenadas registradas en las bitacoras, estableci valores de maximos y minimos tanto en la latidud como en la longitud, y de ahi parti para hacer los condicionales, pero no me salio al idea. Aqui les enviar el código html y javascript para hacer dichos calculos.
Código HTML:
<html> <body> <form name="form1" method="post" action=""> <p>LATITUD: <input type="text" name="lat" id="lat" onKeyUp="masclat(this.value)" > LAT_DECIMAL: <input type="text" name="latd" id="latd"> </p> <p>LONGITUD: <input type="text" name="lon" id="lon" onKeyUp="masclong(this.value)" > LONG_DECIMAL: <input type="text" name="lond" id="lond" > </p> <p>QD: <input type="text" name="qd" id="qd"> </p> </form> </body> </html>
Código:
Que quiero: Extraer solo la parte de los grados de las posiciones para luego poder hacer las comparaciones, de manera q cuando inserte la posicion en grados y minutos (ya sea latitud o longitud) asigne el numero del cuadrante al campo de texto QD. No se si la funcion esta bien programada, pero asi como esta no funciona. Espero puedan ayudarme. Saludos.. /****************************VALIDACION DE LA LATITUD P/FORMULARIOS CON UNA SOLA POSICION********************************/ function masclat(lat){ var mylat = ''; mylat = mylat + lat; if (mylat.length == 2){ mylat = mylat + '°'; document.forms[0].lat.value = mylat; } if (mylat.length == 5){ mylat = mylat + '´'; document.forms[0].lat.value = mylat; verifica_coordl(); } } function verifica_coordl(){ //Funcion que verifica las coordenadas de latitud correctas m1= 1; var dec='' gds = (document.forms[0].lat.value.substring(0,2)); min = (document.forms[0].lat.value.substring(3,5)); situacao = ""; // verifica grados y minutos if ((gds < 00) || (gds > 25)){ situacao = "falsa"; } if (( min < 00) ||( min > 59)){ situacao = "falsa"; } if (document.forms[0].lat.value == "") { situacao = "falsa"; } if (situacao == "falsa") { alert("Posicion Invalida!"); document.forms[0].lat.focus(); } dec = (parseFloat(gds) + (min / 60.0)) * m1; document.forms[0].latd.value = dec; } /****************************VALIDACION DE LA LONGITUD P/FORMULARIOS CON UNA SOLA POSICION********************************/ function masclong(lon){ var mylong = ''; mylong = mylong + lon; if (mylong.length == 2){ mylong = mylong + '°'; document.forms[0].lon.value = mylong; } if (mylong.length == 5){ mylong = mylong + '´'; document.forms[0].lon.value = mylong; verifica_coordll(); } } function verifica_coordll(){ //Funcion que verifica las coordenadas de longitud correctas m1= -1; var dec='' gds = (document.forms[0].lon.value.substring(0,2)); min = (document.forms[0].lon.value.substring(3,5)); situacao = ""; // verifica grados y minutos if ((gds < 00) || (gds > 80)){ situacao = "falsa"; } if (( min < 00) ||( min > 59)){ situacao = "falsa"; } if (document.forms[0].lon.value == "") { situacao = "falsa"; } if (situacao == "falsa") { alert("Posicion Invalida!"); document.forms[0].lon.focus(); } dec = (parseFloat(gds) + (min / 60.0)) * m1; document.forms[0].lond.value = dec; } function cuadrantes(){//Esta es la funcion que utilizo para los cuadrantes l = (document.forms[0].lat.value.substring(0,2)); lo = (document.forms[0].lon.value.substring(0,2)); latgr = parseFloat(l); longr = parseFloat(lo); Alert(latgr,longr); if ((latgr >= 10) || (latgr <= 15) && (longr >= 60) || (longr <= 65)){ document.forms[0].qd.value = 22; } }