/*
Title: Mapa de referência
File: i3geo/classesjs/classe_maparef.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.maparef
Cria e processa o mapa de referência
*/
i3GEO.maparef = {
/*
Variable: fatorZoomDinamico
Define o fator de zoom inicial do mapa de referência quando o modo dinâmico for ativado
*/
fatorZoomDinamico: -3,
/*
Function: inicia
Inicializa o mapa de referência
*/
inicia: function(){
//YAHOO.log("initJanelaRef", "i3geo");
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 += ' '+$trad("o6")+'
';
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);
}
}
//YAHOO.log("Fim initJanelaRef", "i3geo");
if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.maparef.atualiza()") < 0)
{i3GEO.eventos.NAVEGAMAPA.push("i3GEO.maparef.atualiza()");}
this.atualiza();
},
/*
Function: atualiza
Atualiza o mapa de referência.
Se o modo cgi estiver ativado, o mapa de referência é desenhado utilizando-se como src da imagem o programa cgi do Mapserver.
No modo dinâmico, a imagem é gerada de forma diferenciada. Nesse caso, o modo cgi é desabilitado.
O atualizaReferencia é sempre chamado após o mapa ser redesenhado.
Se houve alteração na extensão, é preciso refazer o mapa de referência se não, a imagem atual é armazenada no quado de animação
*/
atualiza: function(){
var dinamico = false;
if ($i("refDinamico"))
{var dinamico = $i("refDinamico").checked;}
if ($i("mapaReferencia")){
//YAHOO.log("Atualizando o mapa de referência", "i3geo");
if(dinamico){
i3GEO.php.referenciadinamica(i3GEO.maparef.processaImagem,i3GEO.maparef.fatorZoomDinamico);
}
else{
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);
}
}
}
else{
if($i("imagemReferencia"))
i3GEO.gadgets.quadros.grava("referencia",$i("imagemReferencia").src);
i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.maparef.atualiza()");
}
},
/*
Function: processaImagem
Substituí a imagem do mapa de referência pela última gerada.
Esta função processa os dados de uma chamada AJAX para atualizar o mapa de referência
Parameters:
retorno - string no formato "var refimagem='nome da imagem'".
*/
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);
//YAHOO.log("Concluída imagem de referência", "redesenho");
}
else
{YAHOO.log("Erro na imagem de referência", "redesenho");}
},
/*
Function: click
Ocorre quando o usuário clica sobre o mapa de referência, alterando a extensão geográfica do mapa principal
*/
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");}
}
};
//YAHOO.log("carregou classe maparef", "Classes i3geo");