/* Title: Interface File: i3geo/classesjs/classe_interface.js About: Licença I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation; tanto a versão 2 da Licença. Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if(typeof(i3GEO) == 'undefined'){ i3GEO = new Array(); } /* Class: i3GEO.interface Funcoes que controlam o comportamento específico de determinadas interfaces As interfaces são definidas na inicialização do i3Geo, por exemplo, openlayers, flamingo,etc A classe "interface" contém os métdos específicos utilizados nessas interfaces Exemplo: Para iniciar o i3geo com uma interface específica, utilize http://localhost/i3geo/ms_criamapa.php?interface=flamingo.htm O HTML deve conter as definições da interface criada e deve estar armazenado em i3geo/aplicmap */ i3GEO.interface = { /* Property: ATUAL Interface atual em uso. Default: padrao */ ATUAL: "padrao", /* Property: IDCORPO ID do elemento HTML que receberá o corpo do mapa */ IDCORPO: "corpoMapa", /* Function: redesenha Aplica o método redesenha da interface atual */ redesenha: function(){ eval("i3GEO.interface."+i3GEO.interface.ATUAL+".redesenha()"); }, /* Function: cria Cria ou altera os elementos HTML necessários para a interface Essa função é executada na inicialização do i3geo Parameters: w {Integer} - largura do corpo do mapa em pixels h {Integer} - altura do corpo do mapa em pixels */ cria: function(w,h){ eval("i3GEO.interface."+i3GEO.interface.ATUAL+".cria("+w+","+h+")"); }, /* Function: inicia Inicia a interface */ inicia: function(w,h){ eval("i3GEO.interface."+i3GEO.interface.ATUAL+".inicia()"); }, padrao:{ redesenha:function(){ $i("img").onload = function() { $i("img").onload = ""; //atualiza quadro i3GEO.gadgets.quadros.grava("imagem",objmapa.mapimagem); var temp = function(retorno){ eval(retorno.data); i3GEO.gadgets.quadros.grava("legenda",legimagem); }; i3GEO.mapa.legendaIMAGEM.obtem(temp); if ($i("imgtemp")) {$i("imgtemp").style.display="none";} //necessário na função de zoom por slide if ($i("imgClone")) $i("imgClone").style.display = "none"; $i("img").style.display = "block"; i3GEO.janela.fechaAguarde("ajaxCorpoMapa"); }; if (!$i("imgtemp")) { var ndiv = document.createElement("div"); ndiv.id = "imgtemp"; ndiv.style.position = "absolute"; ndiv.style.border = "1px solid blue"; document.getElementById("corpoMapa").appendChild(ndiv); } if(g_tipoacao == "pan") { $i("imgtemp").style.left = parseInt($i("img").style.left); $i("imgtemp").style.top = parseInt($i("img").style.top); $i("imgtemp").style.width = objmapa.w; $i("imgtemp").style.height = objmapa.h; $i("imgtemp").style.display="block"; $i("imgtemp").style.backgroundImage = 'url("'+$i("img").src+'")'; } $i("img").style.left = 0; $i("img").style.top = 0; $i("img").src=objmapa.mapimagem; }, cria:function(){ var ins = ""; ins += ""; ins += ""; ins += ""; ins += "
"; $i(i3GEO.interface.IDCORPO).innerHTML = ins; }, inicia:function(){ var i = $i("img"); i.style.width=objmapa.w +"px"; i.style.height=objmapa.h +"px"; var estilo = $i(i3GEO.interface.IDCORPO).style; estilo.width=objmapa.w +"px"; estilo.height=objmapa.h +"px"; estilo.clip = 'rect('+0+" "+(objmapa.w)+" "+(objmapa.h)+" "+0+')'; objmapa.parado = "nao"; //utilizado para verificar se o mouse esta parado i3GEO.eventos.ativa(i); } }, /* Function: flamingo Interface baseada no software flamingo (flash) */ flamingo:{ redesenha: function(){ var w = parseInt($i("flamingo").style.width); if (w == objmapa.w) {$i("flamingo").style.height = parseInt($i("flamingo").style.height)+1;} else {$i("flamingo").style.height = parseInt($i("flamingo").style.height)-1;} i3GEO.janela.fechaAguarde(); }, cria: function(w,h){ var i = $i(i3GEO.interface.IDCORPO); if(i){ var f = $i("flamingo"); if(!f){ var ins = '
'; i.innerHTML = ins; } var f = $i("flamingo"); f.style.width = w; f.style.height = h; } }, inicia: function(){ var monta = function(retorno){ $i("flamingo").style.height = objmapa.h + 45; childPopups = new Array(); childPopupNr = 0; var so = new SWFObject(i3GEO.configura.locaplic+"/pacotes/flamingo/flamingo/flamingo.swf?config="+retorno.data, "flamingoi", "100%", "100%", "8", "#eaeaea"); so.addParam("wmode","window"); so.write("flamingo"); } i3GEO.php.flamingo(monta); } }, /* Function: openlayers Interface baseada no software openlayers */ openlayers:{ redesenha: function(){ if($i("openlayers_OpenLayers_Container")){ var no = $i("openlayers_OpenLayers_Container"); var divs1 = no.getElementsByTagName("div"); var n1 = divs1.length; for(a=0;a'; i.innerHTML = ins; } var f = $i("openlayers"); f.style.width = w; f.style.height = h; } }, inicia: function(){ var montaMapa = function(){ var url = window.location.protocol+"//"+window.location.host+objmapa.cgi+"?"; url += "map="+objmapa.mapfile+"&mode=map&SRS=epsg:4326&"; i3geoOL = new OpenLayers.Map('openlayers', { controls: [] }); i3geoOLlayer = new OpenLayers.Layer.WMS( "Temas I3Geo", url,{layers:'estadosl'},{'buffer':0},{isBaseLayer:true, opacity: 1}); i3geoOLlayer.setVisibility(true); i3geoOL.addLayer(i3geoOLlayer); i3geoOL.events.register("mousemove", i3geoOL, function(e){ //pega as coordenadas do cursor if (navm) {var p = new OpenLayers.Pixel(e.x,e.y);} else {var p = e.xy;} //altera o indicador de localizacao var lonlat = i3geoOL.getLonLatFromViewPortPx(p); var d = i3GEO.calculo.dd2dms(lonlat.lon,lonlat.lat); try{ objposicaomouse.x = p.x; objposicaomouse.y = p.y; objposicaocursor.ddx = lonlat.lon; objposicaocursor.ddy = lonlat.lat; objposicaocursor.telax = p.x; objposicaocursor.telay = p.y; var dc = $i("i3geo"); if ($i("openlayers_OpenLayers_Container")){var dc = $i("openlayers_OpenLayers_Container");} while (dc.offsetParent){ dc = dc.offsetParent; objposicaocursor.telax = objposicaocursor.telax + dc.offsetLeft; objposicaocursor.telay = objposicaocursor.telay + dc.offsetTop; } //movecursor(); } catch(e){} }); var pz = new OpenLayers.Control.PanZoomBar({numZoomLevels: 5}); i3geoOL.addControl(pz); pz.div.style.zIndex = 5000; $i("OpenLayers_Control_PanZoom_pandown").style.top=parseInt($i("OpenLayers_Control_PanZoom_pandown").style.top)+5; $i("OpenLayers_Control_PanZoom_panup").style.top=parseInt($i("OpenLayers_Control_PanZoom_panup").style.top)+5; $i("OpenLayers_Control_PanZoom_panleft").style.top=parseInt($i("OpenLayers_Control_PanZoom_panleft").style.top)+5; $i("OpenLayers_Control_PanZoom_panright").style.top=parseInt($i("OpenLayers_Control_PanZoom_panright").style.top)+5; var navc = new OpenLayers.Control.NavToolbar(); i3geoOL.addControl(navc); navc.div.style.left="8px"; navc.div.style.top="-20px"; navc.div.onclick = function(){ i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pan","img",i3GEO.configura.locaplic); g_operacao="navega"; }; zb = new OpenLayers.Control.ZoomToMaxExtent(); var botoesadic = new OpenLayers.Control.Panel(); botoesadic.addControls([ new OpenLayers.Control.ZoomToMaxExtent() ]); i3geoOL.addControl(botoesadic); botoesadic.div.style.left="10px"; botoesadic.div.style.top=parseInt($i("OpenLayers_Control_PanZoom_zoomout").style.top)+77; i3geoOL.addControl(new OpenLayers.Control.LayerSwitcher()); var m = objmapa.extent.split(" "); var b = new OpenLayers.Bounds(m[0],m[1],m[2],m[3]); i3geoOL.zoomToExtent(b); i3geoOL.addControl(new OpenLayers.Control.Scale("escalanumerica")); i3geoOL.addControl(new OpenLayers.Control.KeyboardDefaults()); //var ol_overview = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0",{layers: 'basic'}); //var options = {layers: [ol_overview],minRatio: 8,maxRatio: 128}; //var overview = new OpenLayers.Control.OverviewMap(options); //i3geoOL.addControl(overview); i3GEO.eventos.ativa($i("openlayers")); }; i3GEO.php.openlayers(montaMapa); } } }