var absc=-53.766666667; var coo=-24.518055556; var xkm=0.009899969; var ykm=0.009126592; var xresol=722; var yresol=506; var mouse_x, mouse_y, d; function Calcular(lat1,lat2,lon1,lon2){ var dc var crs12,crs21 lat1.value=lat1; lat2.value=lat2; lon1.value=lon1; lon2.value=lon2; lat1.name="lat"; lat2.name="lat"; lon1.name="lon"; lon2.name="lon"; lat1=(Math.PI/180)*(-1)*checkField(lat1) lat2=(Math.PI/180)*(-1)*checkField(lat2) lon1=(Math.PI/180)*checkField(lon1) lon2=(Math.PI/180)*checkField(lon2) dc=1.852; //km ellipse=180*60/Math.PI; cd=crsdist(lat1,lon1,lat2,lon2) // compute crs and distance d=cd.d*(180/Math.PI)*60*dc // go to physical units document.player.campo.value="Distância do primeiro ponto: "+parseInt(d)+" Km"; } function crsdist(lat1,lon1,lat2,lon2){ with (Math){ d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2)) } out=new MakeArray(0) out.d=d return out } function MakeArray(n){ this.length=n for (var i=1;i<=n;i++){ this[i]=0 } return this } function ellipsoid(name, a, invf){ /* constructor */ this.name=name this.a=a this.invf=invf } function parselatlon(instr){ // Parse strings dd.dd dd:mm.mm dd:mm:ss.ss var deg,min,sec,colonIndex,degstr,minstr,str str=instr colonIndex=str.indexOf(":") if (colonIndex==-1){ // dd.dd? if (!isPosNumber(str)){ badLLFormat(instr) return 0. } else { return parseFloat(str) } } // falls through if we have a colon degstr=str.substring(0,colonIndex) //DD str=str.substring(colonIndex+1,str.length) //MM... if (!isPosInteger(degstr)){ badLLFormat(instr) return 0. } else { deg=parseFloat(degstr+".0") } //now repeat to pick off minutes colonIndex=str.indexOf(":") if (colonIndex==-1){ // dd:mm.mm? if (!isPosNumber(str)){ badLLFormat(instr) return 0. } else { min=parseFloat(str) if (min < 60.){ return deg+parseFloat(str)/60. } else { badLLFormat(instr) return 0. } } }// falls through if we have a second colon minstr=str.substring(0,colonIndex)+".0" //MM.0 str=str.substring(colonIndex+1,str.length) //SS.SS if (!isPosNumber(minstr) || !isPosNumber(str)){ badLLFormat(instr) return 0. } else { if ( (parseFloat(minstr) < 60) && (parseFloat(str) < 60.)){ return deg+ parseFloat(minstr)/60.+parseFloat(str)/3600. } else { badLLFormat(instr) return 0. } } } function badLLFormat(str){ alert(str+ " is an invalid lat/lon format\n"+ "Use DD.DD DD:MM.MM or DD:MM:SS.SS") } function isPosInteger(instr){ //integer only str=""+instr // force to string type for (var i=0;i "9") { return false } } return true } function isPosNumber(instr){ //integer or float str=""+instr // force to string type oneDecimal=false for (var i=0;i "9") { return false } } return true } function checkField(field){ var str=field.name var latlon; latlon=parselatlon(field) return latlon } marcado=false; ns = document.layers; ie = document.all; ns6 = (document.getElementById && !document.all); bd1=false; vetor=new Array(2); vetor[0]=new Image(); vetor[0].src="images/transp.gif"; vetor[1]=new Image(); vetor[1].src="images/bandeira.gif"; calcdist=false; function moverimagem(){ if(typeof posx == "undefined") posx = 0; if(typeof posy == "undefined") posy = 0; block.left = posx-2; block.top = posy-4; } var xcalc="49:03.38"; var ycalc="22:18.53"; function coordenadas(event) { x=event.clientX; y=event.clientY; if(zoom_enable) return; if(zoomxx) return; if((y>yresol)||(x>xresol)) return; if(calcdist){ moverimagem(); posx=x; posy=y; } y=yresol-y; y=coo+y*ykm; x=absc+x*xkm; xdec=(x-parseInt(x))*60; ydec=(y-parseInt(y))*60; xseg=(xdec-parseInt(xdec))*60; yseg=(ydec-parseInt(ydec))*60; document.player.mostrador.value=parseInt(y)*(-1)+" "+parseInt(ydec)*(-1)+"' "+parseInt(xseg)*(-1)+"''"; document.player.mostrador2.value=parseInt(x)*(-1)+" "+parseInt(xdec)*(-1)+"' "+parseInt(yseg)*(-1)+"''"; if(calcdist) { xcalc=parseInt(x)*(-1)+":"+parseInt(xdec)*(-1)+"."+parseInt(xseg)*(-1); ycalc=parseInt(y)*(-1)+":"+parseInt(ydec)*(-1)+"."+parseInt(yseg)*(-1); if(!bd1) Calcular(y1,ycalc,x1,xcalc); } } function paralisar() { calcdist = false; if(bd1) { x1=xcalc; y1=ycalc; document.player.campo.value="Agora, marque o segundo ponto !"; init(); } else { document.player.botao.value="Remover Pontos"; document.player.campo.value="Distância entre pontos: "+parseInt(d)+" Km"; document.onmousedown=null; } } function band(){ calcdist=true; document.onmousedown= paralisar; } function init(){ if(!bd1){ nome="bandeira1"; bd1=true; document.imgband1.src=vetor[1].src; document.player.botao.style.background='yellow'; } else{ nome="bandeira2"; bd1=false; document.imgband2.src=vetor[1].src; } if(ie) block = document.all[nome].style; if(ns) { block = document.layers[nome]; document.captureEvents(Event.MOUSEMOVE); } if(ns6) block = document.getElementById(nome).style; block.left=240; block.top=240; band(); } function desmarcar(){ document.imgband1.src=vetor[0].src; document.imgband2.src=vetor[0].src; document.player.botao.style.background='#B3D1FC'; document.player.botao.value='Distância'; document.player.campo.value=''; bd1=false; calcdist=false; document.onmousedown= null; } function bandeiras(){ if(zoom_enable) { alert("Desabilite o modo Zoom ! Clique no botao Zoom !"); return false; } if(marcado) desmarcar(); else{ init(); document.player.campo.value="Marque um ponto clicando na imagem !"; } marcado=!marcado; }