Commit ff5027d447cb62d8de672141c76bcbfb2dc6dcb2
1 parent
64b2c7d0
Exists in
master
and in
7 other branches
resolvido ticket #12 Permitir o deslocamento do retângulo mostrado no mapa de re…
…ferência do tipo "arrastar e soltar"
Showing
6 changed files
with
356 additions
and
44 deletions
Show diff stats
classesjs/classe_calculo.js
... | ... | @@ -110,15 +110,18 @@ i3GEO.calculo = { |
110 | 110 | } |
111 | 111 | if(!docmapa) |
112 | 112 | {var docmapa = window.document;} |
113 | - var dc = docmapa.getElementById("img"); | |
114 | - if(!dc){var dc = docmapa;} | |
113 | + try{ | |
114 | + var dc = docmapa.getElementById("img"); | |
115 | + if(!dc){var dc = docmapa;} | |
116 | + } | |
117 | + catch(e){var dc = docmapa;} | |
115 | 118 | var pos = i3GEO.util.pegaPosicaoObjeto(dc); |
116 | 119 | var imgext = ext; //i3GEO.parametros.mapexten; |
117 | 120 | var imgext = imgext.split(" "); |
118 | 121 | vx = (vx * 1) - (imgext[0] * 1); |
119 | 122 | vy = (vy * -1) + (imgext[3] * 1); |
120 | 123 | c = cellsize * 1; |
121 | - var xy = new Array(); | |
124 | + //var xy = new Array(); | |
122 | 125 | return [(vx / c) + pos[0],(vy / c) + pos[1]]; |
123 | 126 | } |
124 | 127 | catch(e){return(new Array());} |
... | ... | @@ -333,6 +336,18 @@ i3GEO.calculo = { |
333 | 336 | Function: rect2ext |
334 | 337 | |
335 | 338 | Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. |
339 | + | |
340 | + Parameters: | |
341 | + | |
342 | + idrect - id do elemento html com o retangulo | |
343 | + | |
344 | + mapext - extensao geografica do mapa onde está o retangulo | |
345 | + | |
346 | + pixel - tamanho do pixel do mapa em dd | |
347 | + | |
348 | + return: | |
349 | + | |
350 | + {Array} - extensão, xmin, ymin, xmax, ymax | |
336 | 351 | */ |
337 | 352 | rect2ext: function(idrect,mapext,pixel){ |
338 | 353 | eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); |
... | ... | @@ -359,13 +374,67 @@ i3GEO.calculo = { |
359 | 374 | var xfig = pix - pos[0]; |
360 | 375 | var yfig = piy - pos[1]; |
361 | 376 | if (dy < 0) dy=dy * -1; |
362 | - var nx = i3GEO.parametros.pixelsize * xfig; | |
363 | - var ny = i3GEO.parametros.pixelsize * yfig; | |
377 | + var nx = pixel * xfig; | |
378 | + var ny = pixel * yfig; | |
364 | 379 | var x2 = (amext[0] * 1) + nx; |
365 | 380 | var y2 = (amext[3] * 1) - ny; |
366 | 381 | var v = x2+" "+y2+" "+x1+" "+y1; |
367 | 382 | var res = new Array(v,x1,y1,x2,y2); |
368 | 383 | return (res); |
384 | + }, | |
385 | + /* | |
386 | + Function: ext2rect | |
387 | + | |
388 | + Calcula o posicionamento de um retângulo com base na extensão geográfica. | |
389 | + | |
390 | + Parameters: | |
391 | + | |
392 | + idrect {String} - id do elemento html com o retangulo, pode ser vazio | |
393 | + | |
394 | + mapext {String} - extensao geografica do mapa onde está o retangulo | |
395 | + | |
396 | + boxext {String} - extensao geografica do retangulo | |
397 | + | |
398 | + pixel {Number} - tamanho do pixel do mapa em dd | |
399 | + | |
400 | + documento {Object DOM} - objeto sob o qual o retângulo será posicionado | |
401 | + | |
402 | + Return: | |
403 | + | |
404 | + {Array} - width,heigth,top,left | |
405 | + */ | |
406 | + ext2rect: function(idrect,mapext,boxext,pixel,documento){ | |
407 | + var rectbox = boxext.split(" "); | |
408 | + var rectmap = mapext.split(" "); | |
409 | + | |
410 | + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} | |
411 | + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} | |
412 | + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} | |
413 | + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} | |
414 | + | |
415 | + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} | |
416 | + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} | |
417 | + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} | |
418 | + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} | |
419 | + | |
420 | + var xyMin = i3GEO.calculo.dd2tela(rectbox[0],rectbox[1],documento,boxext,pixel); | |
421 | + var xyMax = i3GEO.calculo.dd2tela(rectbox[2],rectbox[3],documento,boxext,pixel); | |
422 | + var w = xyMax[0]-xyMin[0]; | |
423 | + var h = xyMin[1]-xyMax[1]; | |
424 | + var tl = i3GEO.calculo.dd2tela(rectbox[0],rectbox[3],documento,mapext,pixel); | |
425 | + var pos = i3GEO.util.pegaPosicaoObjeto(documento); | |
426 | + var t = tl[1] - pos[1]; | |
427 | + var l = tl[0] - pos[0]; | |
428 | + var d = "block" | |
429 | + if($i(idrect)){ | |
430 | + var box = $i(idrect); | |
431 | + box.style.width = w; | |
432 | + box.style.height = h; | |
433 | + box.style.top = t + "px"; | |
434 | + box.style.left = l + "px"; | |
435 | + box.style.display=d; | |
436 | + } | |
437 | + return new Array(w,h,xyMax[1],xyMin[0]); | |
369 | 438 | } |
370 | 439 | }; |
371 | 440 | //YAHOO.log("carregou classe calculo", "Classes i3geo"); |
372 | 441 | \ No newline at end of file | ... | ... |
classesjs/classe_maparef.js
... | ... | @@ -50,7 +50,7 @@ i3GEO.maparef = { |
50 | 50 | novoel.id = "i3geo_winRef"; |
51 | 51 | novoel.style.display="none"; |
52 | 52 | novoel.style.borderColor="gray"; |
53 | - var ins = '<div class="hd">'; | |
53 | + var ins = '<div class="hd" style="text-align:left">'; | |
54 | 54 | 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();"; |
55 | 55 | ins += "<img class=mais onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" />"; |
56 | 56 | 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 = { |
63 | 63 | ins += "</select>"; |
64 | 64 | ins += "</div>"; |
65 | 65 | //ins += '<input style="cursor:pointer" onclick="javascript:i3GEO.maparef.atualiza()" type="checkbox" id="refDinamico" /> '+$trad("o6")+'</div>'; |
66 | - ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" onclick="javascript:i3GEO.maparef.click()">'; | |
67 | - ins += '<img style="cursor:pointer;" id=imagemReferencia src="" >'; | |
66 | + ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" >'; | |
67 | + ins += '<img style="cursor:pointer;" id=imagemReferencia src="" onclick="javascript:i3GEO.maparef.click()">'; | |
68 | 68 | //ins += '<div id=boxRef style="position:absolute;top:0px;left:0px;width:10px;height:10px;border:2px solid blue;display:none"></div></div>'; |
69 | 69 | ins += '<div style="text-align:left;font-size:0px" id="refmensagem" ></div></div>'; |
70 | 70 | novoel.innerHTML = ins; |
... | ... | @@ -94,7 +94,6 @@ i3GEO.maparef = { |
94 | 94 | //YAHOO.log("Fim initJanelaRef", "i3geo"); |
95 | 95 | if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) |
96 | 96 | {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} |
97 | - | |
98 | 97 | this.atualiza(); |
99 | 98 | }, |
100 | 99 | /* |
... | ... | @@ -115,7 +114,6 @@ i3GEO.maparef = { |
115 | 114 | if ($i("refDinamico")) |
116 | 115 | {var tiporef = $i("refDinamico").value;} |
117 | 116 | if ($i("mapaReferencia")){ |
118 | - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); | |
119 | 117 | if(tiporef == "dinamico"){ |
120 | 118 | i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); |
121 | 119 | } |
... | ... | @@ -161,7 +159,7 @@ i3GEO.maparef = { |
161 | 159 | m.src = refimagem; |
162 | 160 | $i("imagemReferencia").src=m.src; |
163 | 161 | if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ |
164 | - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; | |
162 | + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; | |
165 | 163 | $i("refmensagem").style.fontSize="10px"; |
166 | 164 | } |
167 | 165 | else{ |
... | ... | @@ -170,10 +168,47 @@ i3GEO.maparef = { |
170 | 168 | } |
171 | 169 | } |
172 | 170 | i3GEO.gadgets.quadros.grava("referencia",refimagem); |
173 | - //YAHOO.log("Concluída imagem de referência", "redesenho"); | |
171 | + var tiporef = "fixo"; | |
172 | + if ($i("refDinamico")) | |
173 | + {var tiporef = $i("refDinamico").value;} | |
174 | + var box = $i("boxref"); | |
175 | + if(tiporef != "fixo"){ | |
176 | + if (box){box.style.display = "none"} | |
177 | + return; | |
178 | + } | |
179 | + if (!box){ | |
180 | + var novoel = document.createElement("div"); | |
181 | + novoel.id = "boxref"; | |
182 | + novoel.style.zIndex=10; | |
183 | + novoel.style.position = 'absolute'; | |
184 | + //novoel.style.border = '1px solid blue'; | |
185 | + novoel.style.backgroundColor = "RGB(120,220,220)"; | |
186 | + novoel.style.cursor = "move"; | |
187 | + if (navm) | |
188 | + {novoel.style.filter='alpha(opacity=40)';} | |
189 | + else | |
190 | + {novoel.style.opacity= .4;} | |
191 | + $i("mapaReferencia").appendChild(novoel); | |
192 | + var boxrefdd = new YAHOO.util.DD("boxref"); | |
193 | + novoel.onmouseup = function(){ | |
194 | + var rect = $i("boxref"); | |
195 | + var telaminx = parseInt(rect.style.left); | |
196 | + var telamaxy = parseInt(rect.style.top); | |
197 | + var telamaxx = telaminx + parseInt(rect.style.width); | |
198 | + var telaminy = telamaxy + parseInt(rect.style.height); | |
199 | + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
200 | + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
201 | + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; | |
202 | + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); | |
203 | + } | |
204 | + var box = $i("boxref"); | |
205 | + } | |
206 | + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); | |
207 | + if(parseInt(box.style.width) > 120) | |
208 | + box.style.display = "none"; | |
209 | + else | |
210 | + box.style.display = "block"; | |
174 | 211 | } |
175 | - else | |
176 | - {YAHOO.log("Erro na imagem de referência", "redesenho");} | |
177 | 212 | }, |
178 | 213 | /* |
179 | 214 | Function: click | ... | ... |
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.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)}}; | |
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}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]*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])}}; | |
3 | 3 | \ No newline at end of file | ... | ... |
classesjs/compactados/classe_maparef_compacto.js
1 | -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='<div class="hd">';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+="<img class=mais onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" />";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+="<img class=menos onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" /> ";ins+="<select id='refDinamico' onchange='javascript:i3GEO.maparef.atualiza()'>";ins+="<option value='fixo' select >fixo</option>";ins+="<option value='mapa' >mapa</option>";ins+="<option value='dinamico' >dinâmico</option>";ins+="</select>";ins+="</div>";ins+='<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" onclick="javascript:i3GEO.maparef.click()">';ins+='<img style="cursor:pointer;" id=imagemReferencia src="" >';ins+='<div style="text-align:left;font-size:0px" id="refmensagem" ></div></div>';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")}}}; | |
2 | 1 | \ No newline at end of file |
2 | +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='<div class="hd" style="text-align:left">';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+="<img class=mais onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" />";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+="<img class=menos onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" /> ";ins+="<select id='refDinamico' onchange='javascript:i3GEO.maparef.atualiza()'>";ins+="<option value='fixo' select >fixo</option>";ins+="<option value='mapa' >mapa</option>";ins+="<option value='dinamico' >dinâmico</option>";ins+="</select>";ins+="</div>";ins+='<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" >';ins+='<img style="cursor:pointer;" id=imagemReferencia src="" onclick="javascript:i3GEO.maparef.click()">';ins+='<div style="text-align:left;font-size:0px" id="refmensagem" ></div></div>';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")}}}; | |
3 | 3 | \ No newline at end of file | ... | ... |
classesjs/i3geo_tudo_compacto.js
... | ... | @@ -9611,15 +9611,18 @@ i3GEO.calculo = { |
9611 | 9611 | } |
9612 | 9612 | if(!docmapa) |
9613 | 9613 | {var docmapa = window.document;} |
9614 | - var dc = docmapa.getElementById("img"); | |
9615 | - if(!dc){var dc = docmapa;} | |
9614 | + try{ | |
9615 | + var dc = docmapa.getElementById("img"); | |
9616 | + if(!dc){var dc = docmapa;} | |
9617 | + } | |
9618 | + catch(e){var dc = docmapa;} | |
9616 | 9619 | var pos = i3GEO.util.pegaPosicaoObjeto(dc); |
9617 | 9620 | var imgext = ext; //i3GEO.parametros.mapexten; |
9618 | 9621 | var imgext = imgext.split(" "); |
9619 | 9622 | vx = (vx * 1) - (imgext[0] * 1); |
9620 | 9623 | vy = (vy * -1) + (imgext[3] * 1); |
9621 | 9624 | c = cellsize * 1; |
9622 | - var xy = new Array(); | |
9625 | + //var xy = new Array(); | |
9623 | 9626 | return [(vx / c) + pos[0],(vy / c) + pos[1]]; |
9624 | 9627 | } |
9625 | 9628 | catch(e){return(new Array());} |
... | ... | @@ -9834,6 +9837,18 @@ i3GEO.calculo = { |
9834 | 9837 | Function: rect2ext |
9835 | 9838 | |
9836 | 9839 | Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. |
9840 | + | |
9841 | + Parameters: | |
9842 | + | |
9843 | + idrect - id do elemento html com o retangulo | |
9844 | + | |
9845 | + mapext - extensao geografica do mapa onde está o retangulo | |
9846 | + | |
9847 | + pixel - tamanho do pixel do mapa em dd | |
9848 | + | |
9849 | + return: | |
9850 | + | |
9851 | + {Array} - extensão, xmin, ymin, xmax, ymax | |
9837 | 9852 | */ |
9838 | 9853 | rect2ext: function(idrect,mapext,pixel){ |
9839 | 9854 | eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); |
... | ... | @@ -9860,13 +9875,67 @@ i3GEO.calculo = { |
9860 | 9875 | var xfig = pix - pos[0]; |
9861 | 9876 | var yfig = piy - pos[1]; |
9862 | 9877 | if (dy < 0) dy=dy * -1; |
9863 | - var nx = i3GEO.parametros.pixelsize * xfig; | |
9864 | - var ny = i3GEO.parametros.pixelsize * yfig; | |
9878 | + var nx = pixel * xfig; | |
9879 | + var ny = pixel * yfig; | |
9865 | 9880 | var x2 = (amext[0] * 1) + nx; |
9866 | 9881 | var y2 = (amext[3] * 1) - ny; |
9867 | 9882 | var v = x2+" "+y2+" "+x1+" "+y1; |
9868 | 9883 | var res = new Array(v,x1,y1,x2,y2); |
9869 | 9884 | return (res); |
9885 | + }, | |
9886 | + /* | |
9887 | + Function: ext2rect | |
9888 | + | |
9889 | + Calcula o posicionamento de um retângulo com base na extensão geográfica. | |
9890 | + | |
9891 | + Parameters: | |
9892 | + | |
9893 | + idrect {String} - id do elemento html com o retangulo, pode ser vazio | |
9894 | + | |
9895 | + mapext {String} - extensao geografica do mapa onde está o retangulo | |
9896 | + | |
9897 | + boxext {String} - extensao geografica do retangulo | |
9898 | + | |
9899 | + pixel {Number} - tamanho do pixel do mapa em dd | |
9900 | + | |
9901 | + documento {Object DOM} - objeto sob o qual o retângulo será posicionado | |
9902 | + | |
9903 | + Return: | |
9904 | + | |
9905 | + {Array} - width,heigth,top,left | |
9906 | + */ | |
9907 | + ext2rect: function(idrect,mapext,boxext,pixel,documento){ | |
9908 | + var rectbox = boxext.split(" "); | |
9909 | + var rectmap = mapext.split(" "); | |
9910 | + | |
9911 | + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} | |
9912 | + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} | |
9913 | + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} | |
9914 | + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} | |
9915 | + | |
9916 | + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} | |
9917 | + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} | |
9918 | + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} | |
9919 | + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} | |
9920 | + | |
9921 | + var xyMin = i3GEO.calculo.dd2tela(rectbox[0],rectbox[1],documento,boxext,pixel); | |
9922 | + var xyMax = i3GEO.calculo.dd2tela(rectbox[2],rectbox[3],documento,boxext,pixel); | |
9923 | + var w = xyMax[0]-xyMin[0]; | |
9924 | + var h = xyMin[1]-xyMax[1]; | |
9925 | + var tl = i3GEO.calculo.dd2tela(rectbox[0],rectbox[3],documento,mapext,pixel); | |
9926 | + var pos = i3GEO.util.pegaPosicaoObjeto(documento); | |
9927 | + var t = tl[1] - pos[1]; | |
9928 | + var l = tl[0] - pos[0]; | |
9929 | + var d = "block" | |
9930 | + if($i(idrect)){ | |
9931 | + var box = $i(idrect); | |
9932 | + box.style.width = w; | |
9933 | + box.style.height = h; | |
9934 | + box.style.top = t + "px"; | |
9935 | + box.style.left = l + "px"; | |
9936 | + box.style.display=d; | |
9937 | + } | |
9938 | + return new Array(w,h,xyMax[1],xyMin[0]); | |
9870 | 9939 | } |
9871 | 9940 | }; |
9872 | 9941 | //YAHOO.log("carregou classe calculo", "Classes i3geo"); |
... | ... | @@ -12109,7 +12178,7 @@ i3GEO.maparef = { |
12109 | 12178 | novoel.id = "i3geo_winRef"; |
12110 | 12179 | novoel.style.display="none"; |
12111 | 12180 | novoel.style.borderColor="gray"; |
12112 | - var ins = '<div class="hd">'; | |
12181 | + var ins = '<div class="hd" style="text-align:left">'; | |
12113 | 12182 | 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();"; |
12114 | 12183 | ins += "<img class=mais onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" />"; |
12115 | 12184 | 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 = { |
12122 | 12191 | ins += "</select>"; |
12123 | 12192 | ins += "</div>"; |
12124 | 12193 | //ins += '<input style="cursor:pointer" onclick="javascript:i3GEO.maparef.atualiza()" type="checkbox" id="refDinamico" /> '+$trad("o6")+'</div>'; |
12125 | - ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" onclick="javascript:i3GEO.maparef.click()">'; | |
12126 | - ins += '<img style="cursor:pointer;" id=imagemReferencia src="" >'; | |
12194 | + ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" >'; | |
12195 | + ins += '<img style="cursor:pointer;" id=imagemReferencia src="" onclick="javascript:i3GEO.maparef.click()">'; | |
12127 | 12196 | //ins += '<div id=boxRef style="position:absolute;top:0px;left:0px;width:10px;height:10px;border:2px solid blue;display:none"></div></div>'; |
12128 | 12197 | ins += '<div style="text-align:left;font-size:0px" id="refmensagem" ></div></div>'; |
12129 | 12198 | novoel.innerHTML = ins; |
... | ... | @@ -12153,7 +12222,6 @@ i3GEO.maparef = { |
12153 | 12222 | //YAHOO.log("Fim initJanelaRef", "i3geo"); |
12154 | 12223 | if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) |
12155 | 12224 | {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} |
12156 | - | |
12157 | 12225 | this.atualiza(); |
12158 | 12226 | }, |
12159 | 12227 | /* |
... | ... | @@ -12174,7 +12242,6 @@ i3GEO.maparef = { |
12174 | 12242 | if ($i("refDinamico")) |
12175 | 12243 | {var tiporef = $i("refDinamico").value;} |
12176 | 12244 | if ($i("mapaReferencia")){ |
12177 | - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); | |
12178 | 12245 | if(tiporef == "dinamico"){ |
12179 | 12246 | i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); |
12180 | 12247 | } |
... | ... | @@ -12220,7 +12287,7 @@ i3GEO.maparef = { |
12220 | 12287 | m.src = refimagem; |
12221 | 12288 | $i("imagemReferencia").src=m.src; |
12222 | 12289 | if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ |
12223 | - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; | |
12290 | + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; | |
12224 | 12291 | $i("refmensagem").style.fontSize="10px"; |
12225 | 12292 | } |
12226 | 12293 | else{ |
... | ... | @@ -12229,10 +12296,47 @@ i3GEO.maparef = { |
12229 | 12296 | } |
12230 | 12297 | } |
12231 | 12298 | i3GEO.gadgets.quadros.grava("referencia",refimagem); |
12232 | - //YAHOO.log("Concluída imagem de referência", "redesenho"); | |
12299 | + var tiporef = "fixo"; | |
12300 | + if ($i("refDinamico")) | |
12301 | + {var tiporef = $i("refDinamico").value;} | |
12302 | + var box = $i("boxref"); | |
12303 | + if(tiporef != "fixo"){ | |
12304 | + if (box){box.style.display = "none"} | |
12305 | + return; | |
12306 | + } | |
12307 | + if (!box){ | |
12308 | + var novoel = document.createElement("div"); | |
12309 | + novoel.id = "boxref"; | |
12310 | + novoel.style.zIndex=10; | |
12311 | + novoel.style.position = 'absolute'; | |
12312 | + //novoel.style.border = '1px solid blue'; | |
12313 | + novoel.style.backgroundColor = "RGB(120,220,220)"; | |
12314 | + novoel.style.cursor = "move"; | |
12315 | + if (navm) | |
12316 | + {novoel.style.filter='alpha(opacity=40)';} | |
12317 | + else | |
12318 | + {novoel.style.opacity= .4;} | |
12319 | + $i("mapaReferencia").appendChild(novoel); | |
12320 | + var boxrefdd = new YAHOO.util.DD("boxref"); | |
12321 | + novoel.onmouseup = function(){ | |
12322 | + var rect = $i("boxref"); | |
12323 | + var telaminx = parseInt(rect.style.left); | |
12324 | + var telamaxy = parseInt(rect.style.top); | |
12325 | + var telamaxx = telaminx + parseInt(rect.style.width); | |
12326 | + var telaminy = telamaxy + parseInt(rect.style.height); | |
12327 | + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
12328 | + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
12329 | + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; | |
12330 | + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); | |
12331 | + } | |
12332 | + var box = $i("boxref"); | |
12333 | + } | |
12334 | + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); | |
12335 | + if(parseInt(box.style.width) > 120) | |
12336 | + box.style.display = "none"; | |
12337 | + else | |
12338 | + box.style.display = "block"; | |
12233 | 12339 | } |
12234 | - else | |
12235 | - {YAHOO.log("Erro na imagem de referência", "redesenho");} | |
12236 | 12340 | }, |
12237 | 12341 | /* |
12238 | 12342 | Function: click | ... | ... |
classesjs/i3geo_tudo_compacto.js.php
... | ... | @@ -9611,15 +9611,18 @@ i3GEO.calculo = { |
9611 | 9611 | } |
9612 | 9612 | if(!docmapa) |
9613 | 9613 | {var docmapa = window.document;} |
9614 | - var dc = docmapa.getElementById("img"); | |
9615 | - if(!dc){var dc = docmapa;} | |
9614 | + try{ | |
9615 | + var dc = docmapa.getElementById("img"); | |
9616 | + if(!dc){var dc = docmapa;} | |
9617 | + } | |
9618 | + catch(e){var dc = docmapa;} | |
9616 | 9619 | var pos = i3GEO.util.pegaPosicaoObjeto(dc); |
9617 | 9620 | var imgext = ext; //i3GEO.parametros.mapexten; |
9618 | 9621 | var imgext = imgext.split(" "); |
9619 | 9622 | vx = (vx * 1) - (imgext[0] * 1); |
9620 | 9623 | vy = (vy * -1) + (imgext[3] * 1); |
9621 | 9624 | c = cellsize * 1; |
9622 | - var xy = new Array(); | |
9625 | + //var xy = new Array(); | |
9623 | 9626 | return [(vx / c) + pos[0],(vy / c) + pos[1]]; |
9624 | 9627 | } |
9625 | 9628 | catch(e){return(new Array());} |
... | ... | @@ -9834,6 +9837,18 @@ i3GEO.calculo = { |
9834 | 9837 | Function: rect2ext |
9835 | 9838 | |
9836 | 9839 | Calcula a extensão geográfica de um retângulo desenhado sobre o mapa. |
9840 | + | |
9841 | + Parameters: | |
9842 | + | |
9843 | + idrect - id do elemento html com o retangulo | |
9844 | + | |
9845 | + mapext - extensao geografica do mapa onde está o retangulo | |
9846 | + | |
9847 | + pixel - tamanho do pixel do mapa em dd | |
9848 | + | |
9849 | + return: | |
9850 | + | |
9851 | + {Array} - extensão, xmin, ymin, xmax, ymax | |
9837 | 9852 | */ |
9838 | 9853 | rect2ext: function(idrect,mapext,pixel){ |
9839 | 9854 | eval ('pix = parseInt(document.getElementById("'+idrect+'").style.' + g_tipoleft + ")"); |
... | ... | @@ -9860,13 +9875,67 @@ i3GEO.calculo = { |
9860 | 9875 | var xfig = pix - pos[0]; |
9861 | 9876 | var yfig = piy - pos[1]; |
9862 | 9877 | if (dy < 0) dy=dy * -1; |
9863 | - var nx = i3GEO.parametros.pixelsize * xfig; | |
9864 | - var ny = i3GEO.parametros.pixelsize * yfig; | |
9878 | + var nx = pixel * xfig; | |
9879 | + var ny = pixel * yfig; | |
9865 | 9880 | var x2 = (amext[0] * 1) + nx; |
9866 | 9881 | var y2 = (amext[3] * 1) - ny; |
9867 | 9882 | var v = x2+" "+y2+" "+x1+" "+y1; |
9868 | 9883 | var res = new Array(v,x1,y1,x2,y2); |
9869 | 9884 | return (res); |
9885 | + }, | |
9886 | + /* | |
9887 | + Function: ext2rect | |
9888 | + | |
9889 | + Calcula o posicionamento de um retângulo com base na extensão geográfica. | |
9890 | + | |
9891 | + Parameters: | |
9892 | + | |
9893 | + idrect {String} - id do elemento html com o retangulo, pode ser vazio | |
9894 | + | |
9895 | + mapext {String} - extensao geografica do mapa onde está o retangulo | |
9896 | + | |
9897 | + boxext {String} - extensao geografica do retangulo | |
9898 | + | |
9899 | + pixel {Number} - tamanho do pixel do mapa em dd | |
9900 | + | |
9901 | + documento {Object DOM} - objeto sob o qual o retângulo será posicionado | |
9902 | + | |
9903 | + Return: | |
9904 | + | |
9905 | + {Array} - width,heigth,top,left | |
9906 | + */ | |
9907 | + ext2rect: function(idrect,mapext,boxext,pixel,documento){ | |
9908 | + var rectbox = boxext.split(" "); | |
9909 | + var rectmap = mapext.split(" "); | |
9910 | + | |
9911 | + if (rectbox[0]*1 < rectmap[0]*1){rectbox[0] = rectmap[0]} | |
9912 | + if (rectbox[0]*1 > rectmap[2]*1){rectbox[0] = rectmap[2]} | |
9913 | + if (rectbox[2]*1 > rectmap[2]*1){rectbox[2] = rectmap[2]} | |
9914 | + if (rectbox[2]*1 < rectmap[0]*1){rectbox[2] = rectmap[0]} | |
9915 | + | |
9916 | + if (rectbox[3]*1 > rectmap[3]*1){rectbox[3] = rectmap[3]} | |
9917 | + if (rectbox[2]*1 > rectmap[3]*1){rectbox[2] = rectmap[3]} | |
9918 | + if (rectbox[1]*1 < rectmap[1]*1){rectbox[1] = rectmap[1]} | |
9919 | + if (rectbox[3]*1 < rectmap[1]*1){rectbox[3] = rectmap[1]} | |
9920 | + | |
9921 | + var xyMin = i3GEO.calculo.dd2tela(rectbox[0],rectbox[1],documento,boxext,pixel); | |
9922 | + var xyMax = i3GEO.calculo.dd2tela(rectbox[2],rectbox[3],documento,boxext,pixel); | |
9923 | + var w = xyMax[0]-xyMin[0]; | |
9924 | + var h = xyMin[1]-xyMax[1]; | |
9925 | + var tl = i3GEO.calculo.dd2tela(rectbox[0],rectbox[3],documento,mapext,pixel); | |
9926 | + var pos = i3GEO.util.pegaPosicaoObjeto(documento); | |
9927 | + var t = tl[1] - pos[1]; | |
9928 | + var l = tl[0] - pos[0]; | |
9929 | + var d = "block" | |
9930 | + if($i(idrect)){ | |
9931 | + var box = $i(idrect); | |
9932 | + box.style.width = w; | |
9933 | + box.style.height = h; | |
9934 | + box.style.top = t + "px"; | |
9935 | + box.style.left = l + "px"; | |
9936 | + box.style.display=d; | |
9937 | + } | |
9938 | + return new Array(w,h,xyMax[1],xyMin[0]); | |
9870 | 9939 | } |
9871 | 9940 | }; |
9872 | 9941 | //YAHOO.log("carregou classe calculo", "Classes i3geo"); |
... | ... | @@ -12109,7 +12178,7 @@ i3GEO.maparef = { |
12109 | 12178 | novoel.id = "i3geo_winRef"; |
12110 | 12179 | novoel.style.display="none"; |
12111 | 12180 | novoel.style.borderColor="gray"; |
12112 | - var ins = '<div class="hd">'; | |
12181 | + var ins = '<div class="hd" style="text-align:left">'; | |
12113 | 12182 | 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();"; |
12114 | 12183 | ins += "<img class=mais onclick='"+temp+"' src="+i3GEO.util.$im("branco.gif")+" />"; |
12115 | 12184 | 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 = { |
12122 | 12191 | ins += "</select>"; |
12123 | 12192 | ins += "</div>"; |
12124 | 12193 | //ins += '<input style="cursor:pointer" onclick="javascript:i3GEO.maparef.atualiza()" type="checkbox" id="refDinamico" /> '+$trad("o6")+'</div>'; |
12125 | - ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" onclick="javascript:i3GEO.maparef.click()">'; | |
12126 | - ins += '<img style="cursor:pointer;" id=imagemReferencia src="" >'; | |
12194 | + ins += '<div class="bd" style="text-align:left;padding:3px;" id="mapaReferencia" onmouseover="this.onmousemove=function(exy){i3GEO.eventos.posicaoMouseMapa(exy)}" >'; | |
12195 | + ins += '<img style="cursor:pointer;" id=imagemReferencia src="" onclick="javascript:i3GEO.maparef.click()">'; | |
12127 | 12196 | //ins += '<div id=boxRef style="position:absolute;top:0px;left:0px;width:10px;height:10px;border:2px solid blue;display:none"></div></div>'; |
12128 | 12197 | ins += '<div style="text-align:left;font-size:0px" id="refmensagem" ></div></div>'; |
12129 | 12198 | novoel.innerHTML = ins; |
... | ... | @@ -12153,7 +12222,6 @@ i3GEO.maparef = { |
12153 | 12222 | //YAHOO.log("Fim initJanelaRef", "i3geo"); |
12154 | 12223 | if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0) |
12155 | 12224 | {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");} |
12156 | - | |
12157 | 12225 | this.atualiza(); |
12158 | 12226 | }, |
12159 | 12227 | /* |
... | ... | @@ -12174,7 +12242,6 @@ i3GEO.maparef = { |
12174 | 12242 | if ($i("refDinamico")) |
12175 | 12243 | {var tiporef = $i("refDinamico").value;} |
12176 | 12244 | if ($i("mapaReferencia")){ |
12177 | - //YAHOO.log("Atualizando o mapa de referência", "i3geo"); | |
12178 | 12245 | if(tiporef == "dinamico"){ |
12179 | 12246 | i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico,tiporef); |
12180 | 12247 | } |
... | ... | @@ -12220,7 +12287,7 @@ i3GEO.maparef = { |
12220 | 12287 | m.src = refimagem; |
12221 | 12288 | $i("imagemReferencia").src=m.src; |
12222 | 12289 | if ((i3GEO.parametros.mapscale < 15000000) && (i3GEO.parametros.mapscale > 10000000)){ |
12223 | - $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência."; | |
12290 | + $i("refmensagem").innerHTML = "Para navegar no mapa principal, você pode clicar em um ponto no mapa de referência ou arrastar o box."; | |
12224 | 12291 | $i("refmensagem").style.fontSize="10px"; |
12225 | 12292 | } |
12226 | 12293 | else{ |
... | ... | @@ -12229,10 +12296,47 @@ i3GEO.maparef = { |
12229 | 12296 | } |
12230 | 12297 | } |
12231 | 12298 | i3GEO.gadgets.quadros.grava("referencia",refimagem); |
12232 | - //YAHOO.log("Concluída imagem de referência", "redesenho"); | |
12299 | + var tiporef = "fixo"; | |
12300 | + if ($i("refDinamico")) | |
12301 | + {var tiporef = $i("refDinamico").value;} | |
12302 | + var box = $i("boxref"); | |
12303 | + if(tiporef != "fixo"){ | |
12304 | + if (box){box.style.display = "none"} | |
12305 | + return; | |
12306 | + } | |
12307 | + if (!box){ | |
12308 | + var novoel = document.createElement("div"); | |
12309 | + novoel.id = "boxref"; | |
12310 | + novoel.style.zIndex=10; | |
12311 | + novoel.style.position = 'absolute'; | |
12312 | + //novoel.style.border = '1px solid blue'; | |
12313 | + novoel.style.backgroundColor = "RGB(120,220,220)"; | |
12314 | + novoel.style.cursor = "move"; | |
12315 | + if (navm) | |
12316 | + {novoel.style.filter='alpha(opacity=40)';} | |
12317 | + else | |
12318 | + {novoel.style.opacity= .4;} | |
12319 | + $i("mapaReferencia").appendChild(novoel); | |
12320 | + var boxrefdd = new YAHOO.util.DD("boxref"); | |
12321 | + novoel.onmouseup = function(){ | |
12322 | + var rect = $i("boxref"); | |
12323 | + var telaminx = parseInt(rect.style.left); | |
12324 | + var telamaxy = parseInt(rect.style.top); | |
12325 | + var telamaxx = telaminx + parseInt(rect.style.width); | |
12326 | + var telaminy = telamaxy + parseInt(rect.style.height); | |
12327 | + var m = i3GEO.calculo.tela2dd(telaminx,telaminy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
12328 | + var x = i3GEO.calculo.tela2dd(telamaxx,telamaxy,i3GEO.parametros.celularef,i3GEO.parametros.extentref); | |
12329 | + var ext = m[0]+" "+m[1]+" "+x[0]+" "+x[1]; | |
12330 | + i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",ext); | |
12331 | + } | |
12332 | + var box = $i("boxref"); | |
12333 | + } | |
12334 | + i3GEO.calculo.ext2rect("boxref",extentref,i3GEO.parametros.mapexten,g_celularef,$i("mapaReferencia")); | |
12335 | + if(parseInt(box.style.width) > 120) | |
12336 | + box.style.display = "none"; | |
12337 | + else | |
12338 | + box.style.display = "block"; | |
12233 | 12339 | } |
12234 | - else | |
12235 | - {YAHOO.log("Erro na imagem de referência", "redesenho");} | |
12236 | 12340 | }, |
12237 | 12341 | /* |
12238 | 12342 | Function: click | ... | ... |