From ff5027d447cb62d8de672141c76bcbfb2dc6dcb2 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 6 Mar 2009 17:39:19 +0000 Subject: [PATCH] resolvido ticket #12 Permitir o deslocamento do retângulo mostrado no mapa de referência do tipo "arrastar e soltar" --- classesjs/classe_calculo.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- classesjs/classe_maparef.js | 53 ++++++++++++++++++++++++++++++++++++++++++++--------- classesjs/compactados/classe_calculo_compacto.js | 2 +- classesjs/compactados/classe_maparef_compacto.js | 2 +- classesjs/i3geo_tudo_compacto.js | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- classesjs/i3geo_tudo_compacto.js.php | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- 6 files changed, 356 insertions(+), 44 deletions(-) diff --git a/classesjs/classe_calculo.js b/classesjs/classe_calculo.js index a4c73ad..dc57cf5 100644 --- a/classesjs/classe_calculo.js +++ b/classesjs/classe_calculo.js @@ -110,15 +110,18 @@ i3GEO.calculo = { } if(!docmapa) {var docmapa = window.document;} - var dc = docmapa.getElementById("img"); - if(!dc){var dc = docmapa;} + try{ + var dc = docmapa.getElementById("img"); + if(!dc){var dc = docmapa;} + } + catch(e){var dc = docmapa;} var pos = i3GEO.util.pegaPosicaoObjeto(dc); var imgext = ext; //i3GEO.parametros.mapexten; var imgext = imgext.split(" "); vx = (vx * 1) - (imgext[0] * 1); vy = (vy * -1) + (imgext[3] * 1); c = cellsize * 1; - var xy = new Array(); + //var xy = new Array(); return [(vx / c) + pos[0],(vy / c) + pos[1]]; } catch(e){return(new Array());} @@ -333,6 +336,18 @@ i3GEO.calculo = { Function: rect2ext Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. + + Parameters: + + idrect - id do elemento html com o retangulo + + mapext - extensao geografica do mapa onde está o retangulo + + pixel - tamanho do pixel do mapa em dd + + return: + + {Array} - extensão, xmin, ymin, xmax, ymax */ rect2ext: function(idrect,mapext,pixel){ eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); @@ -359,13 +374,67 @@ i3GEO.calculo = { var xfig = pix - pos[0]; var yfig = piy - pos[1]; if (dy < 0) dy=dy * -1; - var nx = i3GEO.parametros.pixelsize * xfig; - var ny = i3GEO.parametros.pixelsize * yfig; + 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); + }, + /* + Function: ext2rect + + Calcula o posicionamento de um retângulo com base na extensão geográfica. + + Parameters: + + idrect {String} - id do elemento html com o retangulo, pode ser vazio + + mapext {String} - extensao geografica do mapa onde está o retangulo + + boxext {String} - extensao geografica do retangulo + + pixel {Number} - tamanho do pixel do mapa em dd + + documento {Object DOM} - objeto sob o qual o retângulo será posicionado + + Return: + + {Array} - width,heigth,top,left + */ + ext2rect: function(idrect,mapext,boxext,pixel,documento){ + var rectbox = boxext.split(" "); + var rectmap = mapext.split(" "); + + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} + + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} + + 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]); } }; //YAHOO.log("carregou classe calculo", "Classes i3geo"); \ No newline at end of file diff --git a/classesjs/classe_maparef.js b/classesjs/classe_maparef.js index 8b4985b..1b93559 100644 --- a/classesjs/classe_maparef.js +++ b/classesjs/classe_maparef.js @@ -50,7 +50,7 @@ i3GEO.maparef = { novoel.id = "i3geo_winRef"; novoel.style.display="none"; novoel.style.borderColor="gray"; - var ins = '
'; + var ins = '
'; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == -1){i3GEO.maparef.fatorZoomDinamico = 1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico + 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; ins += ""; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == 1){i3GEO.maparef.fatorZoomDinamico = -1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico - 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; @@ -63,8 +63,8 @@ i3GEO.maparef = { ins += ""; ins += "
"; //ins += ' '+$trad("o6")+'
'; - ins += '
'; - ins += ''; + ins += '
'; + ins += ''; //ins += '
'; ins += '
'; novoel.innerHTML = ins; @@ -94,7 +94,6 @@ i3GEO.maparef = { //YAHOO.log("Fim initJanelaRef", "i3geo"); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} - this.atualiza(); }, /* @@ -115,7 +114,6 @@ i3GEO.maparef = { if ($i("refDinamico")) {var tiporef = $i("refDinamico").value;} if ($i("mapaReferencia")){ - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); if(tiporef == "dinamico"){ i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); } @@ -161,7 +159,7 @@ i3GEO.maparef = { m.src = refimagem; $i("imagemReferencia").src=m.src; if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; $i("refmensagem").style.fontSize="10px"; } else{ @@ -170,10 +168,47 @@ i3GEO.maparef = { } } i3GEO.gadgets.quadros.grava("referencia",refimagem); - //YAHOO.log("Concluída imagem de referência", "redesenho"); + var tiporef = "fixo"; + if ($i("refDinamico")) + {var tiporef = $i("refDinamico").value;} + var box = $i("boxref"); + if(tiporef != "fixo"){ + if (box){box.style.display = "none"} + return; + } + if (!box){ + var novoel = document.createElement("div"); + novoel.id = "boxref"; + novoel.style.zIndex=10; + novoel.style.position = 'absolute'; + //novoel.style.border = '1px solid blue'; + novoel.style.backgroundColor = "RGB(120,220,220)"; + novoel.style.cursor = "move"; + if (navm) + {novoel.style.filter='alpha(opacity=40)';} + else + {novoel.style.opacity= .4;} + $i("mapaReferencia").appendChild(novoel); + var boxrefdd = new YAHOO.util.DD("boxref"); + novoel.onmouseup = function(){ + var rect = $i("boxref"); + var telaminx = parseInt(rect.style.left); + var telamaxy = parseInt(rect.style.top); + var telamaxx = telaminx + parseInt(rect.style.width); + var telaminy = telamaxy + parseInt(rect.style.height); + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); + } + var box = $i("boxref"); + } + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); + if(parseInt(box.style.width) > 120) + box.style.display = "none"; + else + box.style.display = "block"; } - else - {YAHOO.log("Erro na imagem de referência", "redesenho");} }, /* Function: click diff --git a/classesjs/compactados/classe_calculo_compacto.js b/classesjs/compactados/classe_calculo_compacto.js index 3b4db07..0cf58c9 100644 --- a/classesjs/compactados/classe_calculo_compacto.js +++ b/classesjs/compactados/classe_calculo_compacto.js @@ -1 +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.getElementById("img");if(!dc){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;var xy=new Array();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=i3GEO.parametros.pixelsize*xfig;var ny=i3GEO.parametros.pixelsize*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)}}; \ No newline at end of file +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}try{var dc=docmapa.getElementById("img");if(!dc){var dc=docmapa}}catch(e){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(" ");if(rectbox[0]*1rectmap[2]*1){rectbox[0]=rectmap[2]}if(rectbox[2]*1>rectmap[2]*1){rectbox[2]=rectmap[2]}if(rectbox[2]*1rectmap[3]*1){rectbox[3]=rectmap[3]}if(rectbox[2]*1>rectmap[3]*1){rectbox[2]=rectmap[3]}if(rectbox[1]*1";var temp="javascript:if(i3GEO.maparef.fatorZoomDinamico == 1){i3GEO.maparef.fatorZoomDinamico = -1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico - 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();";ins+=" ";ins+="";ins+="";ins+='
';ins+='';ins+='
';novoel.innerHTML=ins;document.body.appendChild(novoel)}if($i("i3geo_winRef").style.display!="block"){$i("i3geo_winRef").style.display="block";YAHOO.namespace("janelaRef.xp");YAHOO.janelaRef.xp.panel=new YAHOO.widget.Panel("i3geo_winRef",{width:"156px",fixedcenter:false,constraintoviewport:true,underlay:"shadow",close:true,visible:true,draggable:true,modal:false});YAHOO.janelaRef.xp.panel.render();var pos=i3GEO.util.pegaPosicaoObjeto($i("img"));if(navm){YAHOO.janelaRef.xp.panel.moveTo((pos[0]+i3GEO.parametros.w-160),pos[1]+4)}else{YAHOO.janelaRef.xp.panel.moveTo((pos[0]+i3GEO.parametros.w-160),pos[1]+4)}var escondeRef=function(){YAHOO.util.Event.removeListener(YAHOO.janelaRef.xp.panel.close,"click");YAHOO.janelaRef.xp.panel.destroy();i3GEO.util.insereCookie("i3GEO.configura.mapaRefDisplay","none")};YAHOO.util.Event.addListener(YAHOO.janelaRef.xp.panel.close,"click",escondeRef);i3GEO.util.insereCookie("i3GEO.configura.mapaRefDisplay","block");if(typeof(atualizaLocalizarxy)=="function"){if(i3GEO.gadgets.PARAMETROS.mostraCoordenadasGEO.idhtml)YAHOO.util.Event.addListener($i("imagemReferencia"),"mousemove",atualizaLocalizarxy)}}if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()")<0){i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()")}this.atualiza()},atualiza:function(){var dinamico=false;if($i("refDinamico")){var tiporef=$i("refDinamico").value}if($i("mapaReferencia")){if(tiporef=="dinamico"){i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef)}if(tiporef=="fixo"){if(($i("imagemReferencia").src=="")||(i3GEO.parametros.cgi!="sim")){i3GEO.php.referencia(i3GEO.maparef.processaImagem)}else{var re=new RegExp("&mode=map","g");$i("imagemReferencia").src=$i(i3GEO.interface.IDMAPA).src.replace(re,'&mode=reference');i3GEO.gadgets.quadros.grava("referencia",$i("imagemReferencia").src)}}if(tiporef=="mapa"){i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef)}}else{if($i("imagemReferencia"))i3GEO.gadgets.quadros.grava("referencia",$i("imagemReferencia").src);i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.maparef.atualiza()")}},processaImagem:function(retorno){i3GEO.janela.fechaAguarde("ajaxreferencia1");if((retorno.data!="erro")&&(retorno.data!=undefined)){eval(retorno.data);i3GEO.parametros.celularef=g_celularef;i3GEO.parametros.extentref=extentref;if($i("imagemReferencia")){var m=new Image();m.src=refimagem;$i("imagemReferencia").src=m.src;if((i3GEO.parametros.mapscale<15000000)&&(i3GEO.parametros.mapscale>10000000)){$i("refmensagem").innerHTML="Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência.";$i("refmensagem").style.fontSize="10px"}else{$i("refmensagem").innerHTML="";$i("refmensagem").style.fontSize="0px"}}i3GEO.gadgets.quadros.grava("referencia",refimagem)}else{YAHOO.log("Erro na imagem de referência","redesenho")}},click:function(){try{i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1"));i3GEO.php.pan(i3GEO.atualiza,i3GEO.parametros.mapscale,"ref",objposicaocursor.refx,objposicaocursor.refy)}catch(e){var e="";i3GEO.janela.fechaAguarde("i3GEO.atualiza")}}}; \ No newline at end of file +if(typeof(i3GEO)=='undefined'){i3GEO=new Array()}i3GEO.maparef={fatorZoomDinamico:-3,inicia:function(){if(!$i("i3geo_winRef")){var novoel=document.createElement("div");novoel.id="i3geo_winRef";novoel.style.display="none";novoel.style.borderColor="gray";var ins='
';var temp="javascript:if(i3GEO.maparef.fatorZoomDinamico == -1){i3GEO.maparef.fatorZoomDinamico = 1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico + 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();";ins+="";var temp="javascript:if(i3GEO.maparef.fatorZoomDinamico == 1){i3GEO.maparef.fatorZoomDinamico = -1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico - 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();";ins+=" ";ins+="";ins+="
";ins+='
';ins+='';ins+='
';novoel.innerHTML=ins;document.body.appendChild(novoel)}if($i("i3geo_winRef").style.display!="block"){$i("i3geo_winRef").style.display="block";YAHOO.namespace("janelaRef.xp");YAHOO.janelaRef.xp.panel=new YAHOO.widget.Panel("i3geo_winRef",{width:"156px",fixedcenter:false,constraintoviewport:true,underlay:"shadow",close:true,visible:true,draggable:true,modal:false});YAHOO.janelaRef.xp.panel.render();var pos=i3GEO.util.pegaPosicaoObjeto($i("img"));if(navm){YAHOO.janelaRef.xp.panel.moveTo((pos[0]+i3GEO.parametros.w-160),pos[1]+4)}else{YAHOO.janelaRef.xp.panel.moveTo((pos[0]+i3GEO.parametros.w-160),pos[1]+4)}var escondeRef=function(){YAHOO.util.Event.removeListener(YAHOO.janelaRef.xp.panel.close,"click");YAHOO.janelaRef.xp.panel.destroy();i3GEO.util.insereCookie("i3GEO.configura.mapaRefDisplay","none")};YAHOO.util.Event.addListener(YAHOO.janelaRef.xp.panel.close,"click",escondeRef);i3GEO.util.insereCookie("i3GEO.configura.mapaRefDisplay","block");if(typeof(atualizaLocalizarxy)=="function"){if(i3GEO.gadgets.PARAMETROS.mostraCoordenadasGEO.idhtml)YAHOO.util.Event.addListener($i("imagemReferencia"),"mousemove",atualizaLocalizarxy)}}if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()")<0){i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()")}this.atualiza()},atualiza:function(){var dinamico=false;if($i("refDinamico")){var tiporef=$i("refDinamico").value}if($i("mapaReferencia")){if(tiporef=="dinamico"){i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef)}if(tiporef=="fixo"){if(($i("imagemReferencia").src=="")||(i3GEO.parametros.cgi!="sim")){i3GEO.php.referencia(i3GEO.maparef.processaImagem)}else{var re=new RegExp("&mode=map","g");$i("imagemReferencia").src=$i(i3GEO.interface.IDMAPA).src.replace(re,'&mode=reference');i3GEO.gadgets.quadros.grava("referencia",$i("imagemReferencia").src)}}if(tiporef=="mapa"){i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef)}}else{if($i("imagemReferencia"))i3GEO.gadgets.quadros.grava("referencia",$i("imagemReferencia").src);i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.maparef.atualiza()")}},processaImagem:function(retorno){i3GEO.janela.fechaAguarde("ajaxreferencia1");if((retorno.data!="erro")&&(retorno.data!=undefined)){eval(retorno.data);i3GEO.parametros.celularef=g_celularef;i3GEO.parametros.extentref=extentref;if($i("imagemReferencia")){var m=new Image();m.src=refimagem;$i("imagemReferencia").src=m.src;if((i3GEO.parametros.mapscale<15000000)&&(i3GEO.parametros.mapscale>10000000)){$i("refmensagem").innerHTML="Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box.";$i("refmensagem").style.fontSize="10px"}else{$i("refmensagem").innerHTML="";$i("refmensagem").style.fontSize="0px"}}i3GEO.gadgets.quadros.grava("referencia",refimagem);var tiporef="fixo";if($i("refDinamico")){var tiporef=$i("refDinamico").value}var box=$i("boxref");if(tiporef!="fixo"){if(box){box.style.display="none"}return}if(!box){var novoel=document.createElement("div");novoel.id="boxref";novoel.style.zIndex=10;novoel.style.position='absolute';novoel.style.backgroundColor="RGB(120,220,220)";novoel.style.cursor="move";if(navm){novoel.style.filter='alpha(opacity=40)'}else{novoel.style.opacity=.4}$i("mapaReferencia").appendChild(novoel);var boxrefdd=new YAHOO.util.DD("boxref");novoel.onmouseup=function(){var rect=$i("boxref");var telaminx=parseInt(rect.style.left);var telamaxy=parseInt(rect.style.top);var telamaxx=telaminx+parseInt(rect.style.width);var telaminy=telamaxy+parseInt(rect.style.height);var m=i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref);var x=i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref);var ext=m[0]+" "+m[1]+" "+x[0]+" "+x[1];i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext)}var box=$i("boxref")}i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia"));if(parseInt(box.style.width)>120)box.style.display="none";else box.style.display="block"}},click:function(){try{i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1"));i3GEO.php.pan(i3GEO.atualiza,i3GEO.parametros.mapscale,"ref",objposicaocursor.refx,objposicaocursor.refy)}catch(e){var e="";i3GEO.janela.fechaAguarde("i3GEO.atualiza")}}}; \ No newline at end of file diff --git a/classesjs/i3geo_tudo_compacto.js b/classesjs/i3geo_tudo_compacto.js index 86dface..3ed49b5 100644 --- a/classesjs/i3geo_tudo_compacto.js +++ b/classesjs/i3geo_tudo_compacto.js @@ -9611,15 +9611,18 @@ i3GEO.calculo = { } if(!docmapa) {var docmapa = window.document;} - var dc = docmapa.getElementById("img"); - if(!dc){var dc = docmapa;} + try{ + var dc = docmapa.getElementById("img"); + if(!dc){var dc = docmapa;} + } + catch(e){var dc = docmapa;} var pos = i3GEO.util.pegaPosicaoObjeto(dc); var imgext = ext; //i3GEO.parametros.mapexten; var imgext = imgext.split(" "); vx = (vx * 1) - (imgext[0] * 1); vy = (vy * -1) + (imgext[3] * 1); c = cellsize * 1; - var xy = new Array(); + //var xy = new Array(); return [(vx / c) + pos[0],(vy / c) + pos[1]]; } catch(e){return(new Array());} @@ -9834,6 +9837,18 @@ i3GEO.calculo = { Function: rect2ext Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. + + Parameters: + + idrect - id do elemento html com o retangulo + + mapext - extensao geografica do mapa onde está o retangulo + + pixel - tamanho do pixel do mapa em dd + + return: + + {Array} - extensão, xmin, ymin, xmax, ymax */ rect2ext: function(idrect,mapext,pixel){ eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); @@ -9860,13 +9875,67 @@ i3GEO.calculo = { var xfig = pix - pos[0]; var yfig = piy - pos[1]; if (dy < 0) dy=dy * -1; - var nx = i3GEO.parametros.pixelsize * xfig; - var ny = i3GEO.parametros.pixelsize * yfig; + 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); + }, + /* + Function: ext2rect + + Calcula o posicionamento de um retângulo com base na extensão geográfica. + + Parameters: + + idrect {String} - id do elemento html com o retangulo, pode ser vazio + + mapext {String} - extensao geografica do mapa onde está o retangulo + + boxext {String} - extensao geografica do retangulo + + pixel {Number} - tamanho do pixel do mapa em dd + + documento {Object DOM} - objeto sob o qual o retângulo será posicionado + + Return: + + {Array} - width,heigth,top,left + */ + ext2rect: function(idrect,mapext,boxext,pixel,documento){ + var rectbox = boxext.split(" "); + var rectmap = mapext.split(" "); + + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} + + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} + + 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]); } }; //YAHOO.log("carregou classe calculo", "Classes i3geo"); @@ -12109,7 +12178,7 @@ i3GEO.maparef = { novoel.id = "i3geo_winRef"; novoel.style.display="none"; novoel.style.borderColor="gray"; - var ins = '
'; + var ins = '
'; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == -1){i3GEO.maparef.fatorZoomDinamico = 1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico + 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; ins += ""; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == 1){i3GEO.maparef.fatorZoomDinamico = -1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico - 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; @@ -12122,8 +12191,8 @@ i3GEO.maparef = { ins += ""; ins += "
"; //ins += ' '+$trad("o6")+'
'; - ins += '
'; - ins += ''; + ins += '
'; + ins += ''; //ins += '
'; ins += '
'; novoel.innerHTML = ins; @@ -12153,7 +12222,6 @@ i3GEO.maparef = { //YAHOO.log("Fim initJanelaRef", "i3geo"); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} - this.atualiza(); }, /* @@ -12174,7 +12242,6 @@ i3GEO.maparef = { if ($i("refDinamico")) {var tiporef = $i("refDinamico").value;} if ($i("mapaReferencia")){ - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); if(tiporef == "dinamico"){ i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); } @@ -12220,7 +12287,7 @@ i3GEO.maparef = { m.src = refimagem; $i("imagemReferencia").src=m.src; if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; $i("refmensagem").style.fontSize="10px"; } else{ @@ -12229,10 +12296,47 @@ i3GEO.maparef = { } } i3GEO.gadgets.quadros.grava("referencia",refimagem); - //YAHOO.log("Concluída imagem de referência", "redesenho"); + var tiporef = "fixo"; + if ($i("refDinamico")) + {var tiporef = $i("refDinamico").value;} + var box = $i("boxref"); + if(tiporef != "fixo"){ + if (box){box.style.display = "none"} + return; + } + if (!box){ + var novoel = document.createElement("div"); + novoel.id = "boxref"; + novoel.style.zIndex=10; + novoel.style.position = 'absolute'; + //novoel.style.border = '1px solid blue'; + novoel.style.backgroundColor = "RGB(120,220,220)"; + novoel.style.cursor = "move"; + if (navm) + {novoel.style.filter='alpha(opacity=40)';} + else + {novoel.style.opacity= .4;} + $i("mapaReferencia").appendChild(novoel); + var boxrefdd = new YAHOO.util.DD("boxref"); + novoel.onmouseup = function(){ + var rect = $i("boxref"); + var telaminx = parseInt(rect.style.left); + var telamaxy = parseInt(rect.style.top); + var telamaxx = telaminx + parseInt(rect.style.width); + var telaminy = telamaxy + parseInt(rect.style.height); + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); + } + var box = $i("boxref"); + } + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); + if(parseInt(box.style.width) > 120) + box.style.display = "none"; + else + box.style.display = "block"; } - else - {YAHOO.log("Erro na imagem de referência", "redesenho");} }, /* Function: click diff --git a/classesjs/i3geo_tudo_compacto.js.php b/classesjs/i3geo_tudo_compacto.js.php index ef3ae26..5cc973a 100644 --- a/classesjs/i3geo_tudo_compacto.js.php +++ b/classesjs/i3geo_tudo_compacto.js.php @@ -9611,15 +9611,18 @@ i3GEO.calculo = { } if(!docmapa) {var docmapa = window.document;} - var dc = docmapa.getElementById("img"); - if(!dc){var dc = docmapa;} + try{ + var dc = docmapa.getElementById("img"); + if(!dc){var dc = docmapa;} + } + catch(e){var dc = docmapa;} var pos = i3GEO.util.pegaPosicaoObjeto(dc); var imgext = ext; //i3GEO.parametros.mapexten; var imgext = imgext.split(" "); vx = (vx * 1) - (imgext[0] * 1); vy = (vy * -1) + (imgext[3] * 1); c = cellsize * 1; - var xy = new Array(); + //var xy = new Array(); return [(vx / c) + pos[0],(vy / c) + pos[1]]; } catch(e){return(new Array());} @@ -9834,6 +9837,18 @@ i3GEO.calculo = { Function: rect2ext Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. + + Parameters: + + idrect - id do elemento html com o retangulo + + mapext - extensao geografica do mapa onde está o retangulo + + pixel - tamanho do pixel do mapa em dd + + return: + + {Array} - extensão, xmin, ymin, xmax, ymax */ rect2ext: function(idrect,mapext,pixel){ eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); @@ -9860,13 +9875,67 @@ i3GEO.calculo = { var xfig = pix - pos[0]; var yfig = piy - pos[1]; if (dy < 0) dy=dy * -1; - var nx = i3GEO.parametros.pixelsize * xfig; - var ny = i3GEO.parametros.pixelsize * yfig; + 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); + }, + /* + Function: ext2rect + + Calcula o posicionamento de um retângulo com base na extensão geográfica. + + Parameters: + + idrect {String} - id do elemento html com o retangulo, pode ser vazio + + mapext {String} - extensao geografica do mapa onde está o retangulo + + boxext {String} - extensao geografica do retangulo + + pixel {Number} - tamanho do pixel do mapa em dd + + documento {Object DOM} - objeto sob o qual o retângulo será posicionado + + Return: + + {Array} - width,heigth,top,left + */ + ext2rect: function(idrect,mapext,boxext,pixel,documento){ + var rectbox = boxext.split(" "); + var rectmap = mapext.split(" "); + + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} + + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} + + 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]); } }; //YAHOO.log("carregou classe calculo", "Classes i3geo"); @@ -12109,7 +12178,7 @@ i3GEO.maparef = { novoel.id = "i3geo_winRef"; novoel.style.display="none"; novoel.style.borderColor="gray"; - var ins = '
'; + var ins = '
'; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == -1){i3GEO.maparef.fatorZoomDinamico = 1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico + 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; ins += ""; var temp = "javascript:if(i3GEO.maparef.fatorZoomDinamico == 1){i3GEO.maparef.fatorZoomDinamico = -1};i3GEO.maparef.fatorZoomDinamico = i3GEO.maparef.fatorZoomDinamico - 1 ;$i(\"refDinamico\").checked = true;i3GEO.maparef.atualiza();"; @@ -12122,8 +12191,8 @@ i3GEO.maparef = { ins += ""; ins += "
"; //ins += ' '+$trad("o6")+'
'; - ins += '
'; - ins += ''; + ins += '
'; + ins += ''; //ins += '
'; ins += '
'; novoel.innerHTML = ins; @@ -12153,7 +12222,6 @@ i3GEO.maparef = { //YAHOO.log("Fim initJanelaRef", "i3geo"); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} - this.atualiza(); }, /* @@ -12174,7 +12242,6 @@ i3GEO.maparef = { if ($i("refDinamico")) {var tiporef = $i("refDinamico").value;} if ($i("mapaReferencia")){ - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); if(tiporef == "dinamico"){ i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); } @@ -12220,7 +12287,7 @@ i3GEO.maparef = { m.src = refimagem; $i("imagemReferencia").src=m.src; if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; $i("refmensagem").style.fontSize="10px"; } else{ @@ -12229,10 +12296,47 @@ i3GEO.maparef = { } } i3GEO.gadgets.quadros.grava("referencia",refimagem); - //YAHOO.log("Concluída imagem de referência", "redesenho"); + var tiporef = "fixo"; + if ($i("refDinamico")) + {var tiporef = $i("refDinamico").value;} + var box = $i("boxref"); + if(tiporef != "fixo"){ + if (box){box.style.display = "none"} + return; + } + if (!box){ + var novoel = document.createElement("div"); + novoel.id = "boxref"; + novoel.style.zIndex=10; + novoel.style.position = 'absolute'; + //novoel.style.border = '1px solid blue'; + novoel.style.backgroundColor = "RGB(120,220,220)"; + novoel.style.cursor = "move"; + if (navm) + {novoel.style.filter='alpha(opacity=40)';} + else + {novoel.style.opacity= .4;} + $i("mapaReferencia").appendChild(novoel); + var boxrefdd = new YAHOO.util.DD("boxref"); + novoel.onmouseup = function(){ + var rect = $i("boxref"); + var telaminx = parseInt(rect.style.left); + var telamaxy = parseInt(rect.style.top); + var telamaxx = telaminx + parseInt(rect.style.width); + var telaminy = telamaxy + parseInt(rect.style.height); + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); + } + var box = $i("boxref"); + } + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); + if(parseInt(box.style.width) > 120) + box.style.display = "none"; + else + box.style.display = "block"; } - else - {YAHOO.log("Erro na imagem de referência", "redesenho");} }, /* Function: click -- libgit2 0.21.2