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.
<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>
Y aqui va el codigo javascript para la mascara de grados y minutos, calculos a decimales y asignacion de cuadrante, en esta ultima funcion utilice como referencia la coordenada 10°28'N y 64°11'O, que se ubica en el cuadrante N° 22.
/****************************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;
}
}
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..