18 Cze 2009

Konwersja współrzędnych geograficznych

HTML:
<TR>
 <TD>lng<br>
 <input name="lng_1" id="geo_lng_1" value="17" size="4" maxlength="2">°
 <input name="lng_2" id="geo_lng_2" value="06">'
 <input name="lng_3" id="geo_lng_3" value="20">
 <input name="lng_4" id="geo_lng_4" value="E">
 <TD>lat<br>
 <input name="lat_1" id="geo_lat_1" value="51">°
 <input name="lat_2" id="geo_lat_2" value="03">'
 <input name="lat_3" id="geo_lat_3" value="17">
 <input name="lat_4" id="geo_lat_4" value="N">
 <INPUT TYPE="button" name="dalej" value="Convert" onclick="btn_convert()">
</TR>
<TR>
 <TD>X<br><input name="X" id="geo_X"></TD>
 <TD>Y<br><input name="Y" id="geo_Y"></TD>
</TR>

JS:
function getE(id) {
 return document.getElementById(id);
};

function btn_convert() {
 var lng_1 = parseInt(getE("geo_lng_1").value);
 var lng_2 = parseInt(getE("geo_lng_2").value);
 var lng_3 = parseInt(getE("geo_lng_3").value);
 var lng_4 = getE("geo_lng_4").value;
 var lat_1 = parseInt(getE("geo_lat_1").value);
 var lat_2 = parseInt(getE("geo_lat_2").value);
 var lat_3 = parseInt(getE("geo_lat_3").value);
 var lat_4 = getE("geo_lat_4").value;

 var lng_lat = convert(lng_1, lng_2, lng_3, lng_4, lat_1, lat_2, lat_3, lat_4);

 getE("geo_X").value = lng_lat.lng;
 getE("geo_Y").value = lng_lat.lat;
}

function convert(lng_1, lng_2, lng_3, lng_4, lat_1, lat_2, lat_3, lat_4) {

 if (isNaN(lng_1)) lng_1 = 0;
 if (isNaN(lng_2)) lng_2 = 0;
 if (isNaN(lng_3)) lng_3 = 0;
 if (isNaN(lat_1)) lat_1 = 0;
 if (isNaN(lat_2)) lat_2 = 0;
 if (isNaN(lat_3)) lat_3 = 0;

 var lng = parseInt(lng_1);
  lng += eval(parseInt(lng_2)/60);
  lng += eval(parseInt(lng_3)/3600);
 var lat = parseInt(lat_1);
  lat += eval(parseInt(lat_2)/60);
  lat += eval(parseInt(lat_3)/3600);

 if(lng_4=='S') lnt = lng * -1;
 if(lat_4=='W') lat = lat * -1;

 return {lng:lng,lat:lat};
}