Commit 97da8f59fef89b8edd185a0f68325f166a52bc1f

Authored by Edmar Moretti
1 parent f4763544

Correção no cálculo de distâncias. O algoritimo de cálculo foi substituido pelo …

…existente em http://www.movable-type.co.uk/scripts/latlong.html
classesjs/classe_calculo.js
... ... @@ -293,49 +293,36 @@ i3GEO.calculo = {
293 293 Function: distancia
294 294  
295 295 Calcula a distância entre dois pontos.
296   -
297   - Baseado no site http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
298 296  
  297 + Baseado no site http://www.movable-type.co.uk/scripts/latlong.html (indicado por louriques@yahoo.com.br)
  298 +
  299 + Em versões anteriores utilizava-se o cálculo proposto em http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
  300 +
299 301 Parameters:
300 302  
301   - lga {Numeric} - x inicial.
  303 + lon1 {Numeric} - x inicial.
302 304  
303   - lta {Numeric} - y inicial
  305 + lat1 {Numeric} - y inicial
304 306  
305   - lgb {Numeric} - x final
  307 + lon2 {Numeric} - x final
306 308  
307   - ltb {Numeric} - y final
  309 + lat2 {Numeric} - y final
308 310  
309 311 Return:
310 312  
311 313 Type:
312 314 {Numeric}
313 315 */
314   - distancia: function(lga,lta,lgb,ltb){
315   - try{
316   - var er = 6366.707;
317   - var radlat1 = Math.PI * lta/180;
318   - var radlat2 = Math.PI * ltb/180;
319   - var radlong1 = Math.PI * lga/180;
320   - var radlong2 = Math.PI * lgb/180;
321   - if (lta > 0) {radlat1=Math.PI/2-radlat1;}
322   - if (lta < 0) {radlat1=Math.PI/2+radlat1;}
323   - if (lga < 0) {radlong1=Math.PI*2-radlong1;}
324   - if (ltb > 0) {radlat2=Math.PI/2-radlat2;}
325   - if (ltb < 0) {radlat2=Math.PI/2+radlat2;}
326   - if (lgb < 0) {radlong2=Math.PI*2-radlong2;}
327   - var x1 = er * Math.cos(radlong1)*Math.sin(radlat1);
328   - var y1 = er * Math.sin(radlong1)*Math.sin(radlat1);
329   - var z1 = er * Math.cos(radlat1);
330   - var x2 = er * Math.cos(radlong2)*Math.sin(radlat2);
331   - var y2 = er * Math.sin(radlong2)*Math.sin(radlat2);
332   - var z2 = er * Math.cos(radlat2);
333   - var d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
334   - //side, side, side, law of cosines and arccos
335   - var theta = Math.acos((er*er+er*er-d*d)/(2*er*er));
336   - return theta*er;
337   - }
338   - catch(e){return (0);}
  316 + distancia: function(lon1,lat1,lon2,lat2){
  317 + var R = 6371; // km
  318 + var dLat = ((lat2-lat1))* Math.PI / 180;
  319 + var dLon = ((lon2-lon1)) * Math.PI / 180;
  320 + var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
  321 + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
  322 + Math.sin(dLon/2) * Math.sin(dLon/2);
  323 + var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  324 + var d = R * c;
  325 + return d;
339 326 },
340 327 /*
341 328 Function: rect2ext
... ...
classesjs/compactados/classe_calculo_compacto.js
1   -if(typeof(i3GEO)=='undefined'){i3GEO=new Array()}i3GEO.calculo={dms2dd:function(cd,cm,cs){try{var sinal='positivo';if(cd<0){cd=cd*-1;sinal='negativo'}spm=cs/3600;mpg=cm/60;var dd=(cd*1)+(mpg*1)+(spm*1);if(sinal=='negativo'){dd=dd*-1}return(dd)}catch(e){return(0)}},dd2tela:function(vx,vy,docmapa,ext,cellsize){try{if(i3GEO.interface.ATUAL=="googlemaps"){var pos=i3GEO.util.pegaPosicaoObjeto($i(i3GEO.interface.IDCORPO));var latlng=new GLatLng(vy,vx);var xyn=i3GeoMap.fromLatLngToContainerPixel(latlng);var xy=new Array();return[(xyn.x)+pos[0],(xyn.y)+pos[1]]}if(arguments.length==3){var ext=i3GEO.parametros.mapexten;var cellsize=i3GEO.parametros.pixelsize}if(arguments.length==4){var cellsize=i3GEO.parametros.pixelsize}if(!docmapa){var docmapa=window.document}var dc=docmapa;var pos=i3GEO.util.pegaPosicaoObjeto(dc);var imgext=ext;var imgext=imgext.split(" ");vx=(vx*1)-(imgext[0]*1);vy=(vy*-1)+(imgext[3]*1);c=cellsize*1;return[(vx/c)+pos[0],(vy/c)+pos[1]]}catch(e){return(new Array())}},dd2dms:function(x,y){var m=0;var s=0;var dx=parseInt(x);if(dx>0){var restod=x-dx}if(dx<0){restod=(x*-1)-(dx*-1)}dx=dx;if(restod!=0){var mm=restod*60;var m=parseInt(restod*60);var restos=mm-m;var mx=m;if(restos!=0){var s=restos*60;var s=(s+"_").substring(0,5);var sx=s}else{s="00.00"}}else{var mx="00";var sx="00.00"}if(m.length==2){m="0"+m+""}if(s*1<10){s="0"+s}var xv=dx+" "+mx+" "+sx;var m=0;var s=0;var dy=parseInt(y);if(dy>0){var restod=y-dy}if(dy<0){var restod=(y*-1)-(dy*-1)}dy=dy;if(restod!=0){var mm=restod*60;var m=parseInt(restod*60);var restos=mm-m;var my=m;if(restos!=0){var s=restos*60;s=(s+"_").substring(0,5);var sy=s}else{var s="00.00"}}else{var my="00";var sy="00.00"}if(m.length==2){m="0"+m}if(s*1<10){s="0"+s}var yv=dy+" "+my+" "+sy;var res=new Array();res[0]=xv;res[1]=yv;return res},tela2dd:function(xfign,yfign,g_celula,imgext){try{if(navm){xfign=xfign-2.2;yfign=yfign-2.7}else{xfign=xfign-0.12;yfign=yfign-1.05}var nx=g_celula*xfign;var ny=g_celula*yfign;var amext=imgext.split(" ");var longdd=(amext[0]*1)+nx;var latdd=(amext[3]*1)-ny;var res=new Array();res[0]=longdd;res[1]=latdd;return(res)}catch(e){return(0)}},area:function(pontos,pixel){try{if(pontos.xpt.length>2){var $array_length=pontos.xpt.length;pontos.xtela.push(pontos.xtela[0]);pontos.ytela.push(pontos.ytela[0]);pontos.xtela.push(pontos.xtela[0]);pontos.ytela.push(pontos.ytela[1]);var $polygon_area=0;for(var $i=0;$i<=$array_length;$i++){$polygon_area+=((pontos.xtela[$i]*pontos.ytela[$i+1])-(pontos.ytela[$i]*pontos.xtela[$i+1]))}$polygon_area=Math.abs($polygon_area)/2}else{$polygon_area="Sao necessarios pelo menos tres pontos para o calculo"}return $polygon_area*pixel}catch(e){return(0)}},distancia:function(lga,lta,lgb,ltb){try{var er=6366.707;var radlat1=Math.PI*lta/180;var radlat2=Math.PI*ltb/180;var radlong1=Math.PI*lga/180;var radlong2=Math.PI*lgb/180;if(lta>0){radlat1=Math.PI/2-radlat1}if(lta<0){radlat1=Math.PI/2+radlat1}if(lga<0){radlong1=Math.PI*2-radlong1}if(ltb>0){radlat2=Math.PI/2-radlat2}if(ltb<0){radlat2=Math.PI/2+radlat2}if(lgb<0){radlong2=Math.PI*2-radlong2}var x1=er*Math.cos(radlong1)*Math.sin(radlat1);var y1=er*Math.sin(radlong1)*Math.sin(radlat1);var z1=er*Math.cos(radlat1);var x2=er*Math.cos(radlong2)*Math.sin(radlat2);var y2=er*Math.sin(radlong2)*Math.sin(radlat2);var z2=er*Math.cos(radlat2);var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));var theta=Math.acos((er*er+er*er-d*d)/(2*er*er));return theta*er}catch(e){return(0)}},rect2ext:function(idrect,mapext,pixel){eval('pix = parseInt(document.getElementById("'+idrect+'").style.'+g_tipoleft+")");eval('piy = parseInt(document.getElementById("'+idrect+'").style.'+g_tipotop+")");if($i(idrect)){var bx=$i(idrect);var bxs=bx.style}else{alert("Box nao encontrado");return}var pos=i3GEO.util.pegaPosicaoObjeto($i("img"));var xfig0=parseInt(bxs.width)-pos[0];var yfig0=parseInt(bxs.height)-pos[1];var xfig=pix+(parseInt(bxs.width))-pos[0];var yfig=piy+(parseInt(bxs.height))-pos[1];var amext=mapext.split(" ");var dx=((amext[0]*-1)-(amext[2]*-1))/-1;var dy=((amext[1]*1)-(amext[3]*1))/-1;if(dy<0)dy=dy*-1;var nx=pixel*xfig;var ny=pixel*yfig;var x1=(amext[0]*1)+nx;var y1=(amext[3]*1)-ny;var xfig=pix-pos[0];var yfig=piy-pos[1];if(dy<0)dy=dy*-1;var nx=pixel*xfig;var ny=pixel*yfig;var x2=(amext[0]*1)+nx;var y2=(amext[3]*1)-ny;var v=x2+" "+y2+" "+x1+" "+y1;var res=new Array(v,x1,y1,x2,y2);return(res)},ext2rect:function(idrect,mapext,boxext,pixel,documento){var rectbox=boxext.split(" ");var rectmap=mapext.split(" ");var xyMin=i3GEO.calculo.dd2tela(rectbox[0],rectbox[1],documento,boxext,pixel);var xyMax=i3GEO.calculo.dd2tela(rectbox[2],rectbox[3],documento,boxext,pixel);var w=xyMax[0]-xyMin[0];var h=xyMin[1]-xyMax[1];var tl=i3GEO.calculo.dd2tela(rectbox[0],rectbox[3],documento,mapext,pixel);var pos=i3GEO.util.pegaPosicaoObjeto(documento);var t=tl[1]-pos[1];var l=tl[0]-pos[0];var d="block";if($i(idrect)){var box=$i(idrect);box.style.width=w;box.style.height=h;box.style.top=t+"px";box.style.left=l+"px";box.style.display=d}return new Array(w,h,xyMax[1],xyMin[0])}};
2 1 \ No newline at end of file
  2 +if(typeof(i3GEO)=='undefined'){i3GEO=new Array()}i3GEO.calculo={dms2dd:function(cd,cm,cs){try{var sinal='positivo';if(cd<0){cd=cd*-1;sinal='negativo'}spm=cs/3600;mpg=cm/60;var dd=(cd*1)+(mpg*1)+(spm*1);if(sinal=='negativo'){dd=dd*-1}return(dd)}catch(e){return(0)}},dd2tela:function(vx,vy,docmapa,ext,cellsize){try{if(i3GEO.interface.ATUAL=="googlemaps"){var pos=i3GEO.util.pegaPosicaoObjeto($i(i3GEO.interface.IDCORPO));var latlng=new GLatLng(vy,vx);var xyn=i3GeoMap.fromLatLngToContainerPixel(latlng);var xy=new Array();return[(xyn.x)+pos[0],(xyn.y)+pos[1]]}if(arguments.length==3){var ext=i3GEO.parametros.mapexten;var cellsize=i3GEO.parametros.pixelsize}if(arguments.length==4){var cellsize=i3GEO.parametros.pixelsize}if(!docmapa){var docmapa=window.document}var dc=docmapa;var pos=i3GEO.util.pegaPosicaoObjeto(dc);var imgext=ext;var imgext=imgext.split(" ");vx=(vx*1)-(imgext[0]*1);vy=(vy*-1)+(imgext[3]*1);c=cellsize*1;return[(vx/c)+pos[0],(vy/c)+pos[1]]}catch(e){return(new Array())}},dd2dms:function(x,y){var m=0;var s=0;var dx=parseInt(x);if(dx>0){var restod=x-dx}if(dx<0){restod=(x*-1)-(dx*-1)}dx=dx;if(restod!=0){var mm=restod*60;var m=parseInt(restod*60);var restos=mm-m;var mx=m;if(restos!=0){var s=restos*60;var s=(s+"_").substring(0,5);var sx=s}else{s="00.00"}}else{var mx="00";var sx="00.00"}if(m.length==2){m="0"+m+""}if(s*1<10){s="0"+s}var xv=dx+" "+mx+" "+sx;var m=0;var s=0;var dy=parseInt(y);if(dy>0){var restod=y-dy}if(dy<0){var restod=(y*-1)-(dy*-1)}dy=dy;if(restod!=0){var mm=restod*60;var m=parseInt(restod*60);var restos=mm-m;var my=m;if(restos!=0){var s=restos*60;s=(s+"_").substring(0,5);var sy=s}else{var s="00.00"}}else{var my="00";var sy="00.00"}if(m.length==2){m="0"+m}if(s*1<10){s="0"+s}var yv=dy+" "+my+" "+sy;var res=new Array();res[0]=xv;res[1]=yv;return res},tela2dd:function(xfign,yfign,g_celula,imgext){try{if(navm){xfign=xfign-2.2;yfign=yfign-2.7}else{xfign=xfign-0.12;yfign=yfign-1.05}var nx=g_celula*xfign;var ny=g_celula*yfign;var amext=imgext.split(" ");var longdd=(amext[0]*1)+nx;var latdd=(amext[3]*1)-ny;var res=new Array();res[0]=longdd;res[1]=latdd;return(res)}catch(e){return(0)}},area:function(pontos,pixel){try{if(pontos.xpt.length>2){var $array_length=pontos.xpt.length;pontos.xtela.push(pontos.xtela[0]);pontos.ytela.push(pontos.ytela[0]);pontos.xtela.push(pontos.xtela[0]);pontos.ytela.push(pontos.ytela[1]);var $polygon_area=0;for(var $i=0;$i<=$array_length;$i++){$polygon_area+=((pontos.xtela[$i]*pontos.ytela[$i+1])-(pontos.ytela[$i]*pontos.xtela[$i+1]))}$polygon_area=Math.abs($polygon_area)/2}else{$polygon_area="Sao necessarios pelo menos tres pontos para o calculo"}return $polygon_area*pixel}catch(e){return(0)}},distancia:function(lon1,lat1,lon2,lat2){var R=6371;var dLat=((lat2-lat1))*Math.PI/180;var dLon=((lon2-lon1))*Math.PI/180;var a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(lat1*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.sin(dLon/2)*Math.sin(dLon/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var d=R*c;return d},rect2ext:function(idrect,mapext,pixel){eval('pix = parseInt(document.getElementById("'+idrect+'").style.'+g_tipoleft+")");eval('piy = parseInt(document.getElementById("'+idrect+'").style.'+g_tipotop+")");if($i(idrect)){var bx=$i(idrect);var bxs=bx.style}else{alert("Box nao encontrado");return}var pos=i3GEO.util.pegaPosicaoObjeto($i("img"));var xfig0=parseInt(bxs.width)-pos[0];var yfig0=parseInt(bxs.height)-pos[1];var xfig=pix+(parseInt(bxs.width))-pos[0];var yfig=piy+(parseInt(bxs.height))-pos[1];var amext=mapext.split(" ");var dx=((amext[0]*-1)-(amext[2]*-1))/-1;var dy=((amext[1]*1)-(amext[3]*1))/-1;if(dy<0)dy=dy*-1;var nx=pixel*xfig;var ny=pixel*yfig;var x1=(amext[0]*1)+nx;var y1=(amext[3]*1)-ny;var xfig=pix-pos[0];var yfig=piy-pos[1];if(dy<0)dy=dy*-1;var nx=pixel*xfig;var ny=pixel*yfig;var x2=(amext[0]*1)+nx;var y2=(amext[3]*1)-ny;var v=x2+" "+y2+" "+x1+" "+y1;var res=new Array(v,x1,y1,x2,y2);return(res)},ext2rect:function(idrect,mapext,boxext,pixel,documento){var rectbox=boxext.split(" ");var rectmap=mapext.split(" ");var xyMin=i3GEO.calculo.dd2tela(rectbox[0],rectbox[1],documento,boxext,pixel);var xyMax=i3GEO.calculo.dd2tela(rectbox[2],rectbox[3],documento,boxext,pixel);var w=xyMax[0]-xyMin[0];var h=xyMin[1]-xyMax[1];var tl=i3GEO.calculo.dd2tela(rectbox[0],rectbox[3],documento,mapext,pixel);var pos=i3GEO.util.pegaPosicaoObjeto(documento);var t=tl[1]-pos[1];var l=tl[0]-pos[0];var d="block";if($i(idrect)){var box=$i(idrect);box.style.width=w;box.style.height=h;box.style.top=t+"px";box.style.left=l+"px";box.style.display=d}return new Array(w,h,xyMax[1],xyMin[0])}};
3 3 \ No newline at end of file
... ...
classesjs/i3geo_tudo_compacto.js
... ... @@ -10249,49 +10249,36 @@ i3GEO.calculo = {
10249 10249 Function: distancia
10250 10250  
10251 10251 Calcula a distância entre dois pontos.
10252   -
10253   - Baseado no site http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
10254 10252  
  10253 + Baseado no site http://www.movable-type.co.uk/scripts/latlong.html (indicado por louriques@yahoo.com.br)
  10254 +
  10255 + Em versões anteriores utilizava-se o cálculo proposto em http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
  10256 +
10255 10257 Parameters:
10256 10258  
10257   - lga {Numeric} - x inicial.
  10259 + lon1 {Numeric} - x inicial.
10258 10260  
10259   - lta {Numeric} - y inicial
  10261 + lat1 {Numeric} - y inicial
10260 10262  
10261   - lgb {Numeric} - x final
  10263 + lon2 {Numeric} - x final
10262 10264  
10263   - ltb {Numeric} - y final
  10265 + lat2 {Numeric} - y final
10264 10266  
10265 10267 Return:
10266 10268  
10267 10269 Type:
10268 10270 {Numeric}
10269 10271 */
10270   - distancia: function(lga,lta,lgb,ltb){
10271   - try{
10272   - var er = 6366.707;
10273   - var radlat1 = Math.PI * lta/180;
10274   - var radlat2 = Math.PI * ltb/180;
10275   - var radlong1 = Math.PI * lga/180;
10276   - var radlong2 = Math.PI * lgb/180;
10277   - if (lta > 0) {radlat1=Math.PI/2-radlat1;}
10278   - if (lta < 0) {radlat1=Math.PI/2+radlat1;}
10279   - if (lga < 0) {radlong1=Math.PI*2-radlong1;}
10280   - if (ltb > 0) {radlat2=Math.PI/2-radlat2;}
10281   - if (ltb < 0) {radlat2=Math.PI/2+radlat2;}
10282   - if (lgb < 0) {radlong2=Math.PI*2-radlong2;}
10283   - var x1 = er * Math.cos(radlong1)*Math.sin(radlat1);
10284   - var y1 = er * Math.sin(radlong1)*Math.sin(radlat1);
10285   - var z1 = er * Math.cos(radlat1);
10286   - var x2 = er * Math.cos(radlong2)*Math.sin(radlat2);
10287   - var y2 = er * Math.sin(radlong2)*Math.sin(radlat2);
10288   - var z2 = er * Math.cos(radlat2);
10289   - var d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
10290   - //side, side, side, law of cosines and arccos
10291   - var theta = Math.acos((er*er+er*er-d*d)/(2*er*er));
10292   - return theta*er;
10293   - }
10294   - catch(e){return (0);}
  10272 + distancia: function(lon1,lat1,lon2,lat2){
  10273 + var R = 6371; // km
  10274 + var dLat = ((lat2-lat1))* Math.PI / 180;
  10275 + var dLon = ((lon2-lon1)) * Math.PI / 180;
  10276 + var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
  10277 + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
  10278 + Math.sin(dLon/2) * Math.sin(dLon/2);
  10279 + var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  10280 + var d = R * c;
  10281 + return d;
10295 10282 },
10296 10283 /*
10297 10284 Function: rect2ext
... ...
classesjs/i3geo_tudo_compacto.js.php
... ... @@ -10249,49 +10249,36 @@ i3GEO.calculo = {
10249 10249 Function: distancia
10250 10250  
10251 10251 Calcula a distância entre dois pontos.
10252   -
10253   - Baseado no site http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
10254 10252  
  10253 + Baseado no site http://www.movable-type.co.uk/scripts/latlong.html (indicado por louriques@yahoo.com.br)
  10254 +
  10255 + Em versões anteriores utilizava-se o cálculo proposto em http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm
  10256 +
10255 10257 Parameters:
10256 10258  
10257   - lga {Numeric} - x inicial.
  10259 + lon1 {Numeric} - x inicial.
10258 10260  
10259   - lta {Numeric} - y inicial
  10261 + lat1 {Numeric} - y inicial
10260 10262  
10261   - lgb {Numeric} - x final
  10263 + lon2 {Numeric} - x final
10262 10264  
10263   - ltb {Numeric} - y final
  10265 + lat2 {Numeric} - y final
10264 10266  
10265 10267 Return:
10266 10268  
10267 10269 Type:
10268 10270 {Numeric}
10269 10271 */
10270   - distancia: function(lga,lta,lgb,ltb){
10271   - try{
10272   - var er = 6366.707;
10273   - var radlat1 = Math.PI * lta/180;
10274   - var radlat2 = Math.PI * ltb/180;
10275   - var radlong1 = Math.PI * lga/180;
10276   - var radlong2 = Math.PI * lgb/180;
10277   - if (lta > 0) {radlat1=Math.PI/2-radlat1;}
10278   - if (lta < 0) {radlat1=Math.PI/2+radlat1;}
10279   - if (lga < 0) {radlong1=Math.PI*2-radlong1;}
10280   - if (ltb > 0) {radlat2=Math.PI/2-radlat2;}
10281   - if (ltb < 0) {radlat2=Math.PI/2+radlat2;}
10282   - if (lgb < 0) {radlong2=Math.PI*2-radlong2;}
10283   - var x1 = er * Math.cos(radlong1)*Math.sin(radlat1);
10284   - var y1 = er * Math.sin(radlong1)*Math.sin(radlat1);
10285   - var z1 = er * Math.cos(radlat1);
10286   - var x2 = er * Math.cos(radlong2)*Math.sin(radlat2);
10287   - var y2 = er * Math.sin(radlong2)*Math.sin(radlat2);
10288   - var z2 = er * Math.cos(radlat2);
10289   - var d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
10290   - //side, side, side, law of cosines and arccos
10291   - var theta = Math.acos((er*er+er*er-d*d)/(2*er*er));
10292   - return theta*er;
10293   - }
10294   - catch(e){return (0);}
  10272 + distancia: function(lon1,lat1,lon2,lat2){
  10273 + var R = 6371; // km
  10274 + var dLat = ((lat2-lat1))* Math.PI / 180;
  10275 + var dLon = ((lon2-lon1)) * Math.PI / 180;
  10276 + var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
  10277 + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
  10278 + Math.sin(dLon/2) * Math.sin(dLon/2);
  10279 + var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  10280 + var d = R * c;
  10281 + return d;
10295 10282 },
10296 10283 /*
10297 10284 Function: rect2ext
... ...
exemplos/calculo1.htm
... ... @@ -4,16 +4,20 @@
4 4 <meta http-equiv="Category" content="I3Geo Mapa interativo MMA geoprocessamento sig mobile">
5 5 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
6 6 <title>i3Geo - Mapa interativo</title>
7   -<script type="text/javascript" src="../classesjs/i3geonaocompacto.js"></script>
  7 +<script type="text/javascript" src="../classesjs/i3geoo.js"></script>
8 8 <style>
9 9 p{font-size:16px;text-align:left;padding:10px;}
10 10 </style>
11 11 </head>
12 12 <body style="background:white;text-align:left">
13   -<p>Cálculos de distância<br>
  13 +<p>Cálculos de distância em km<br>
14 14 <script>
15 15 var calc = i3GEO.calculo.distancia(-50,-10,-50,10)
16 16 document.body.innerHTML += "<p>-50,-10,-50,10 = "+calc
  17 +var calc = i3GEO.calculo.distancia(-50,10,-50,-10)
  18 +document.body.innerHTML += "<p>-50,10,-50,-10 = "+calc
  19 +var calc = i3GEO.calculo.distancia(-1,53,0,52)
  20 +document.body.innerHTML += "<p>-1,53,0,52 = "+calc
17 21 </script>
18 22 </body>
19 23 </html>
20 24 \ No newline at end of file
... ...
exemplos/index.html
... ... @@ -35,4 +35,6 @@ body,td
35 35 <p>Aplicativos customizados</p>
36 36 <p><a href="aplic1.htm" target="_blank" >Busca rápida</a></p>
37 37 <p><a href="aplic2.htm" target="_blank" >Adiciona uma camada extra via javascript</a></p>
  38 +<p>Cálculos</p>
  39 +<p><a href="calculo1.htm" target="_blank" >Distâncias</a></p>
38 40 </body>
... ...