/* Title: Mapa i3GEO.mapa Executa operações obre o mapa principal Em i3GEO.mapa.dialogo estao as funcoes de abertura dos dialogos para alteracao das propriedades do mapa, como cor de fundo, tipo de imagem, legenda etc. Arquivo: i3geo/classesjs/classe_mapa.js Licença: GPL2 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@gmail.com 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; Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUACAO 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') { var i3GEO = {}; } i3GEO.mapa = { /* * Propriedade: TEMASINICIAISLIGADOS * * Lista indicando quais temas serao adicionados ao mapa na inicializacao * * Esse valor e utilizado para completar a variavel mashuppar utilizada por i3GEO. * * Os temas sao aqueles que aparecem em i3geo/temas * * Type: {string} * * Default: {} */ TEMASINICIAISLIGADOS : "", /* * Propriedade: TEMASINICIAISLIGADOS * * Lista indicando quais temas serao ligados na inicializacao * * Esse valor e utilizado para completar a variavel mashuppar utilizada por i3GEO. * * Os temas sao aqueles que aparecem em i3geo/temas * * Type: {string} * * Default: {} */ TEMASINICIAIS : "", /* * Propriedade: AUTORESIZE * * Indica se o tamanho do mapa sera ajustado toda vez que o navegador for redimensionado * * Type: {boolean} * * Default: {false} */ AUTORESIZE : false, /* * Armazena o nome dos objetos geoXml adicionados ao mapa pela API do google maps * * Tipo: {Array} */ GEOXML : [], /* * Function: insereDobraPagina * * Insere o icone do tipo "dobra de pagina" que permite alterar o renderizador do mapa * * Parametros: * * tipo {string} - tipo de icone googlemaps|openlayers * * imagem {string} - endereco da imagem que sera utilizada no icone */ insereDobraPagina : function(tipo, imagem) { var novoel = $i("i3GEOdobraPagina"); if (!novoel) { novoel = document.createElement("img"); } novoel.src = imagem; novoel.id = "i3GEOdobraPagina"; if (tipo === "googlemaps") { novoel.onclick = function(evt) { i3GEO.Interface.atual2gm.inicia(); }; } if (tipo === "openlayers") { novoel.onclick = function(evt) { i3GEO.Interface.atual2ol.inicia(); }; } novoel.style.cursor = "pointer"; novoel.style.position = "absolute"; novoel.style.top = i3GEO.parametros.h - 35 + "px"; novoel.style.zIndex = "5000000"; novoel.style.left = i3GEO.parametros.w - 35 + "px"; $i(i3GEO.Interface.IDMAPA).appendChild(novoel); YAHOO.util.Event.addListener("i3GEOdobraPagina", "click", YAHOO.util.Event.stopPropagation); YAHOO.util.Event.addListener("i3GEOdobraPagina", "click", YAHOO.util.Event.preventDefault); }, /* * Reposiciona o icone do tipo "dobra de pagina" */ reposicionaDobraPagina : function() { var novoel = $i("i3GEOdobraPagina"); if (!novoel) { return; } novoel.style.top = i3GEO.parametros.h - 35 + "px"; novoel.style.left = i3GEO.parametros.w - 35 + "px"; }, /* * Ativa o redimensionamento automatico do mapa sempre que o navegador for redimensionado * * e definido como um evento do elemento window */ ativaAutoResize : function() { var ativo = true; window.onresize = function() { var Dw, Dh, r = false; Dw = YAHOO.util.Dom.getViewportWidth(); Dh = YAHOO.util.Dom.getViewportHeight(); if (Math.abs(Dw - i3GEO.tamanhodoc[0]) > 50) { r = true; } if (Math.abs(Dh - i3GEO.tamanhodoc[1]) > 50) { r = true; } if (r === false) { //return; } i3GEO.tamanhodoc = [ Dw, Dh ]; if(ativo === true){ setTimeout(function() { i3GEO.reCalculaTamanho(); i3GEO.barraDeBotoes.recria("i3geo_barra2"); if (i3GEO.Interface.TABLET === true) { i3GEO.guias.escondeGuias(); return; } if (i3GEO.guias.TIPO === "movel") { i3GEO.guias.guiaMovel.reposiciona(); i3GEO.guias.guiaMovel.abreFecha("fecha"); } else { i3GEO.guias.ajustaAltura(); } i3GEO.mapa.reposicionaDobraPagina(); ativo = true; }, 2000); } ativo = false; }; }, /* * Ajusta o posicionamento do corpo do mapa * * Esse ajuste e necessario na inicializacao, uma vez que o mapa utiliza style.position='absolute' * * Parameters: * * elemento {String} - id do elemento HTML que devera ser ajustado e que contem o mapa */ ajustaPosicao : function(elemento) { if (arguments.length === 0) { return; } var imagemxi = 0, imagemyi = 0, dc = $i(elemento), c; if (!dc) { return; } try { while ((dc.offsetParent) && (dc.offsetParent.id !== "i3geo")) { dc = dc.offsetParent; imagemxi += dc.offsetLeft; imagemyi += dc.offsetTop; } c = $i(i3GEO.Interface.IDCORPO); if (c) { c.style.position = "absolute"; if (navm) { $left(i3GEO.Interface.IDCORPO, imagemxi - 1); } else { $left(i3GEO.Interface.IDCORPO, imagemxi); } $top(i3GEO.Interface.IDCORPO, imagemyi); } } catch (e) { i3GEO.janela.tempoMsg("Ocorreu um erro. i3GEO.mapa.ajustaPosicao " + e); } }, /* * Function: ativaTema * * Altera a variavel i3GEO.temaAtivo e atualiza a interface em funcao do novo tema que for ativado * * O tema anteriormente ativo tem sua cor alterada para a cor normal e o novo tema e destacado com uma cor diferente * * Executa tambem as funcoes armazenadas em i3GEO.eventos.ATIVATEMA * * Parametros: * * codigo {string} - codigo da camada */ ativaTema : function(codigo) { if (codigo) { if (codigo === "") { return; } if (i3GEO.temaAtivo !== "") { i3GEO.util.defineValor("ArvoreTituloTema" + i3GEO.temaAtivo, "style.color", ""); } i3GEO.temaAtivo = codigo; i3GEO.util.defineValor("ArvoreTituloTema" + codigo, "style.color", "brown"); } }, /* * Function: ativaLogo * * Ativa ou desativa a logo marca. */ ativaLogo : function() { if (i3GEO.Interface.ATUAL === "googlemaps") { alert($trad("x21")); return; } i3GEO.php.ativalogo(i3GEO.atualiza); var cr = $i("i3GEOcopyright"); if (cr) { if (cr.style.display === "block") { cr.style.display = "none"; } else { cr.style.display = "block"; } } }, /* * Verifica se ocorreu algum problema na atualizacao do corpo do mapa e inicia o processo de tentativa de recuperacao * * Parametro: * * retorno {string} - objeto recebido da funcao PHP de atualizacao do mapa */ verifica : function(retorno) { try { if (retorno.data) { retorno = retorno.data; } if (retorno.variaveis) { retorno = retorno.variaveis; } if ((retorno === "erro") || (typeof (retorno) === 'undefined')) { i3GEO.mapa.ajustaPosicao(); i3GEO.janela.fechaAguarde(); i3GEO.mapa.recupera.inicia(); } i3GEO.mapa.recupera.TENTATIVA = 0; } catch (e) { if (i3GEO.Interface.ATUAL === "openlayers" || i3GEO.Interface.ATUAL === "googlemaps") { i3GEO.janela.fechaAguarde(); return; } if (this.recupera.TENTATIVA === 0) { i3GEO.janela.tempoMsg("Erro no mapa. Sera feita uma tentativa de recuperacao."); i3GEO.mapa.recupera.inicia(); } else { i3GEO.janela.tempoMsg("Recuperacao impossivel. Sera feita uma tentativa de reiniciar o mapa."); if (this.recupera.TENTATIVA === 1) { this.recupera.TENTATIVA = 2; i3GEO.php.reiniciaMapa(i3GEO.atualiza); } } } }, /* * Tenta recuperar o mapa caso ocorra algum problema * * O i3Geo mantem sempre uma copia do arquivo mapfile em uso. Essa funcao tenta usar essa copia para restaurar o funcionamento do * mapa */ recupera : { /* * Armazena a quantidade de tentativas de recuperacao que foram feitas * * Tipo: {Integer} */ TENTATIVA : 0, /* * Inicia a tentativa de recuperacao */ inicia : function() { i3GEO.mapa.ajustaPosicao(); i3GEO.janela.fechaAguarde(); if (this.recupera.TENTATIVA === 0) { this.recupera.TENTATIVA++; this.recupera.restaura(); } }, /* * Restaura o mapa para a copia de seguranca existente no servidor */ restaura : function() { i3GEO.php.recuperamapa(i3GEO.atualiza); } }, /* * Classe: i3GEO.mapa.legendaHTML * * Controla a obtencao da legenda do mapa formatada em HTML. * * util para mostrar a legenda na tela */ legendaHTML : { /* * Propriedade: incluiBotaoLibera * * Define se na legenda sera incluido o botao para liberar a legenda e inclui-la em uma janela flutuante * * Tipo: {boolean} * * Default: {true} */ incluiBotaoLibera : false, /* * Armazena o id definido na criacao da legenda */ ID : "", /* * Armazena a lista de camadas que devem ficar escondidas na legenda */ CAMADASSEMLEGENDA : [], /* * Function: cria * * Cria a legenda HTML * * O elemento HTML definido em ID deve ter style=display:block * * A legenda e incluida no id definido. Se id for igual a "", sera apenas definido o evento de atualizacao, permitindo que seja * criada a janela flutuante, por exemplo: * * i3GEO.mapa.legendaHTML.cria(""); i3GEO.mapa.legendaHTML.libera(); * * Parametros: * * id {String} - id do elemento que recebera a legenda */ cria : function(id) { if (arguments.length === 0) { id = ""; } i3GEO.mapa.legendaHTML.ID = id; if (i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.mapa.legendaHTML.atualiza()") < 0) { i3GEO.eventos.NAVEGAMAPA.push("i3GEO.mapa.legendaHTML.atualiza()"); } i3GEO.mapa.legendaHTML.atualiza(); }, /* * Function: atualiza * * Atualiza o elemento HTML do mapa utilizado para mostrar a legenda */ atualiza : function() { var idleg = $i("wlegenda_corpo"), temp = function(retorno) { var legenda = "", ins, re, desativar, tema = "", classe = ""; re = new RegExp(); if (retorno.data !== "erro" && retorno.data !== undefined) { //troca os ids pois podem ja existir na arvore de camadas re = new RegExp("legendack_", "g"); retorno.data.legenda = retorno.data.legenda.replace(re, "liblegendack_"); legenda = "
Mostra tudo

" + retorno.data.legenda; } if (legenda != "" && idleg) { ins = ""; if (i3GEO.mapa.legendaHTML.incluiBotaoLibera === true) { ins += '

' + $trad("x11") + '

'; } re = new RegExp("", "g"); legenda = legenda.replace(re, ""); ins += "
" + legenda + "
"; idleg.innerHTML = "
"+ins+"
"; } i3GEO.mapa.legendaHTML.escondeTemasMarcados(); //desmarca as classes desligadas desativar = retorno.data.desativar; for(tema in desativar){ for(classe in desativar[tema]){ ins = $i("liblegendack_"+tema+"_"+desativar[tema][classe]); if(ins){ ins.checked = false; } } } }; if (idleg && idleg.style.display === "block") { // para o caso da legenda ja estar aberta if (i3GEO.mapa.legendaHTML.ID !== "") { idleg = $i(i3GEO.mapa.legendaHTML.ID); if (idleg) { idleg.innerHTML = ""; } } idleg = $i("wlegenda_corpo"); i3GEO.mapa.legendaHTML.obtem(temp); } else { if (idleg) { idleg.innerHTML = ""; } if (i3GEO.mapa.legendaHTML.ID !== "") { idleg = $i(i3GEO.mapa.legendaHTML.ID); if (idleg && idleg.style.display === "block") { i3GEO.mapa.legendaHTML.obtem(temp); } } } }, /* * Faz a chamada em AJAX que gera a legenda * * O resultado e processado pela funcao passada como parametro * * Parametro: * * funcao {function} - funcao que recebera o resultado da chamada AJAX. O objeto CPAINT e enviado como parametro. */ obtem : function(funcao) { i3GEO.php.criaLegendaHTML(funcao, "", i3GEO.configura.templateLegenda); }, /* * Liga ou desliga um unico tema. Utilizado pela legenda HTML, permitindo que um tema seja processado diretamente na legenda. * * Parametro: * * inputbox {object) - objeto do tipo input checkbox com a propriedade value indicando o codigo do tema que sera processado */ ativaDesativaTema : function(inputbox) { var temp = function() { // i3GEO.contadorAtualiza++; i3GEO.php.corpo(i3GEO.atualiza, i3GEO.configura.tipoimagem); i3GEO.arvoreDeCamadas.atualiza(""); i3GEO.janela.fechaAguarde("redesenha"); }; if (!inputbox.checked) { i3GEO.php.ligatemas(temp, inputbox.value, ""); } else { i3GEO.php.ligatemas(temp, "", inputbox.value); } }, escondeTema : function(tema) { var d = $i("legendaLayer_" + tema); if (d) { d.style.display = "none"; i3GEO.mapa.legendaHTML.CAMADASSEMLEGENDA.push(tema); } }, escondeTemasMarcados : function() { var temas = i3GEO.mapa.legendaHTML.CAMADASSEMLEGENDA, n = temas.length, i, temp; for (i = 0; i < n; i++) { temp = $i(temas[i]); if (temp) { temp.style.display = "none"; } } }, mostraTodosOsTemas : function() { i3GEO.mapa.legendaHTML.CAMADASSEMLEGENDA = []; i3GEO.mapa.legendaHTML.atualiza(); }, /* * Function: libera * * Libera a legenda criando uma janela flutuante sobre o mapa * * Parametros: * * ck - sim|nao - (opcional) inclui ou nao o checkbox que permitem desligar a camada */ libera : function(ck, largura, altura, topo, esquerda) { if (!ck) { ck = "nao"; } if (!largura) { largura = 302; } if (!altura) { altura = 300; } var cabecalho, minimiza, janela; if (!$i("wlegenda")) { cabecalho = function() { }; minimiza = function() { i3GEO.janela.minimiza("wlegenda"); }; janela = i3GEO.janela.cria( largura + "px", altura + "px", "", "", "", $trad("p3"), "wlegenda", false, "hd", cabecalho, minimiza); } else { janela = YAHOO.i3GEO.janela.manager.find("wlegenda"); janela.show(); } $i("wlegenda_corpo").style.backgroundColor = "white"; if (i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.mapa.legendaHTML.atualiza()") < 0) { i3GEO.eventos.NAVEGAMAPA.push("i3GEO.mapa.legendaHTML.atualiza()"); } i3GEO.mapa.legendaHTML.atualiza(); if (topo && esquerda) { janela = YAHOO.i3GEO.janela.manager.find("wlegenda"); janela.moveTo(esquerda, topo); } } }, /* * Controla a obtencao da legenda do mapa na forma de uma imagem * * e utilizado principalmente para armazenar as imagens para a funcao de obtencao do historico do mapa */ legendaIMAGEM : { /* * Faz a chamada em AJAX que gera a legenda * * O resultado e processado pela funcao passada como parametro * * Parametro: * * funcao {function} - funcao que recebera o resultado da chamada AJAX. O objeto CPAINT e enviado como parametro. */ obtem : function(funcao) { i3GEO.php.criaLegendaImagem(funcao); } }, /* * Classe: i3GEO.mapa.dialogo * * Abre as telas de dialogo das opcoes de manipulacao do mapa atual */ dialogo : { /* * Function: geolocal * * Abre a janela de dialogo da ferramenta de geolocalizacao do usuario */ geolocal : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.geolocal()", "geolocal", "geolocal"); }, /* * Function: listaDeMapasBanco * * Lista os mapas cadastrados no sistema de administracao do i3geo */ listaDeMapasBanco : function() { if (i3GEO.guias.CONFIGURA["mapas"]) { var janela, divid; janela = i3GEO.janela.cria("200px", "450px", "", "", "", "", "i3GEOFsalvaMapaLista", false, "hd"); divid = janela[2].id; // a funcao que mostra a lista de mapas e a mesma que pode ser utilizada ao incluir a lista de mapas // como uma guia i3GEO.guias.CONFIGURA["mapas"].click.call(this, divid); } else { window.open(i3GEO.configura.locaplic + "/admin/rssmapas.php", "_blank"); } }, /* * Function: congelaMapa * * Congela a visão atual do mapa mostrando-o em uma janela flutuante */ congelaMapa : function() { var url = "", idjanela = YAHOO.util.Dom.generateId(), cabecalho = function() { }, titulo, minimiza = function() { i3GEO.janela.minimiza(idjanela); }; if (i3GEO.Interface.ATUAL === "openlayers" || i3GEO.Interface.ATUAL === "googlemaps") { url = i3GEO.configura.locaplic + "/ferramentas/congelamapa/openlayers.php?g_sid=" + i3GEO.configura.sid + "&ext=" + i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten); titulo = "Mapa"+"    "; i3GEO.janela.cria("500px", "350px", url, "", "", titulo, idjanela, false, "hd", cabecalho, minimiza); } }, /* * Function: metaestat * * Abre a janela de dialogo da ferramenta de cartogramas estatisticos METAESTAT */ metaestat : function() { var temp = function() { i3GEOF.metaestat.MULTIPARAMETROS = true; i3GEOF.metaestat.inicia(); }; i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.metaestat()", "metaestat", "metaestat", "index.js", temp); }, /* * Function: metaestatListaMapas * * Lista os mapas publicados no METAESTAT */ metaestatListaMapas : function() { i3GEO.util.dialogoFerramenta( "i3GEO.mapa.dialogo.metaestatListaMapas()", "metaestat", "listamapas", "listamapas.js", "i3GEOF.listamapas.iniciaJanelaFlutuante()"); }, /* * Function: preferencias * * Preferencias do usuario */ preferencias : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.preferencias()", "preferencias", "preferencias"); }, /* * Function: locregiao * * Abre a janela de dialogo da ferramenta de busca de regiao cadastrada no METAESTAT */ locregiao : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.locregiao()", "metaestat", "locregiao", "locregiao.js"); }, /* * Function: filtraregiao * * Abre a janela de dialogo da ferramenta de busca de regioes cadastradas no METAESTAT com opcao de filtrar a regiao escolhida */ filtraregiao : function() { i3GEO.util.dialogoFerramenta( "i3GEO.mapa.dialogo.filtraregiao()", "metaestat", "locregiao", "locregiao.js", "i3GEOF.locregiao.abreComFiltro()"); }, /* * Function: animacao * * Abre a janela de dialogo da ferramenta que permite animar o mapa atual */ animacao : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.animacao()", "animacao", "animacao"); }, /* * Function: opacidade * * Abre a janela de dialogo da ferramenta de definicao da transparencia das camadas principais do mapa */ opacidade : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.opacidade()", "opacidademapa", "opacidademapa"); }, /* * Function: telaRemota * * Abre a janela de dialogo da ferramenta de configuracao de uma tela remota */ telaRemota : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.telaremota()", "telaremota", "telaremota"); }, /* * Function: t3d * * Abre a janela de dialogo da ferramenta de geracao da visualizacao em 3d */ t3d : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.t3d()", "3d", "t3d"); }, /* * Function: imprimir * * Abre a janela de dialogo da ferramenta que permite imprimir o mapa atual */ imprimir : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.imprimir()", "imprimir", "imprimir"); }, /* * Function: mostraExten * * Abre a janela de dialogo da ferramenta que mostra a extensao geografica atual do mapa */ mostraExten : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.mostraExten()", "mostraexten", "mostraExten"); }, /* * Function: outputformat * * Abre a janela de dialogo da ferramenta outputformat */ outputformat : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.outputformat()", "outputformat", "outputformat"); }, /* * Function: autoredesenha * * Abre a janela de dialogo da ferramenta opcoes_autoredesenha */ autoredesenha : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.autoredesenha()", "opcoes_autoredesenha", "opcoesTempo"); }, /* * Function: salvaMapa * * Abre a janela de dialogo da ferramenta salvamapa */ salvaMapa : function() { if (i3GEO.parametros === "") { i3GEO.janela .tempoMsg("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto."); return; } i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.salvaMapa()", "salvamapa", "salvaMapa"); }, /* * Function: carregaMapa * * Abre a janela de dialogo da ferramenta carregamapa */ carregaMapa : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.carregaMapa()", "carregamapa", "carregaMapa"); }, /* * Function: convertews * * Abre a janela de dialogo da ferramenta convertews */ convertews : function() { if (i3GEO.parametros.mapfile === "") { i3GEO.janela .tempoMsg("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto."); return; } i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.convertews()", "convertews", "converteMapaWS"); }, /* * Function: convertekml * * Abre a janela de dialogo da ferramenta convertemapakml */ convertekml : function() { if (i3GEO.parametros.mapfile === "") { alert("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto."); return; } i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.convertekml()", "convertemapakml", "converteMapaKml"); }, /* * Function: queryMap * * Abre a janela de dialogo da ferramenta opcoes_querymap */ queryMap : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.queryMap()", "opcoes_querymap", "opcoesQuery"); }, /* * Function: template * * Abre a janela de dialogo da ferramenta template */ template : function() { i3GEO.janela.cria( "300px", "400px", i3GEO.configura.locaplic + "/ferramentas/template/index.htm", "", "", "Template    "); }, /* * Function: tamanho * * Abre a janela de dialogo da ferramenta opcoes_tamanho */ tamanho : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.tamanho()", "opcoes_tamanho", "opcoesTamanho"); }, /* * Function: tipoimagem * * Abre a janela de dialogo da ferramenta tipoimagem */ tipoimagem : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.tipoimagem()", "tipoimagem", "tipoimagem"); }, /* * Function: corFundo * * Abre a janela de dialogo da ferramenta opcoes_fundo */ corFundo : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.corFundo()", "opcoes_fundo", "opcoesFundo"); }, /* * Function: opcoesEscala * * Abre a janela de dialogo da ferramenta opcoes_escala */ opcoesEscala : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.opcoesEscala()", "opcoes_escala", "opcoesEscala"); }, /* * Function: opcoesLegenda * * Abre a janela de dialogo da ferramenta opcoes_legenda */ opcoesLegenda : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.opcoesLegenda()", "opcoes_legenda", "opcoesLegenda"); }, /* * Function: gradeCoord * * Abre a janela de dialogo da ferramenta gradecoord */ gradeCoord : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.gradeCoord()", "gradecoord", "gradeCoord"); }, /* * Function: cliqueTexto * * Abre a janela de dialogo da ferramenta inseretxt */ cliqueTexto : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.cliqueTexto()", "inseretxt", "inseretxt"); }, /* * Function: selecao * * Abre a janela de dialogo da ferramenta selecao */ selecao : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.selecao()", "selecao", "selecao"); }, /* * Function: cliquePonto * * Abre a janela de dialogo da ferramenta inserexy2 */ cliquePonto : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.cliquePonto()", "inserexy2", "inserexy"); }, /* * Function: cliqueGrafico * * Abre a janela de dialogo da ferramenta inseregrafico */ cliqueGrafico : function() { i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.cliqueGrafico()", "inseregrafico", "insereGrafico"); }, /* * Function: cliqueIdentificaDefault * * Abre a janela de dialogo da ferramenta identifica * * Parameters: * * x,y - opcional * */ cliqueIdentificaDefault : function(x, y) { // @FIXIT nada elegante // evita clicar sobre a barra do googlemaps if (objposicaocursor.imgx < 70) { return; } // evita ativar a ferramenta se o botao nao estiver ativo // e estiver no modo de clique permanente if (i3GEO.barraDeBotoes.BOTAOCLICADO !== "identifica" && i3GEO.eventos.cliquePerm.ativo === false) { return; } i3GEO.eventos.MOUSEPARADO.remove("verificaTip()"); // na interface googleearth verifica se existe mais eventos no mouseclick if (i3GEO.Interface.ATUAL === "googleearth" && i3GEO.eventos.MOUSECLIQUE.length > 1) { return; } // javascript nao foi carregado if (typeof (i3GEOF.identifica) === 'undefined') { // javascript que sera carregado var js = i3GEO.configura.locaplic + "/ferramentas/identifica/index.js", temp = function() { if (x) { i3GEOF.identifica.criaJanelaFlutuante(x, y); } else { i3GEOF.identifica.criaJanelaFlutuante(objposicaocursor.ddx, objposicaocursor.ddy); } }; // carrega o script i3GEO.util.scriptTag(js, temp, "i3GEOF.identifica_script"); } else { if (x) { i3GEOF.identifica.buscaDadosTema(i3GEO.temaAtivo, x, y); } else { i3GEOF.identifica.buscaDadosTema(i3GEO.temaAtivo, objposicaocursor.ddx, objposicaocursor.ddy); } return; } }, /* * Mostra etiquetas no mapa com informacoes sobre os temas com etiquetas ativas * * Essa e a funcao padrao definida em i3GEO.configura */ verificaTipDefault : function(e) { // evita clicar sobre a barra do googlemaps // @FIXIT nada elegante // console.warn(objposicaocursor.imgx) if (objposicaocursor.imgx < 70) { return; } if (i3GEO.barraDeBotoes.BOTAOCLICADO !== "identificaBalao" && i3GEO.eventos.cliquePerm.ativo === false) { return; } // na interface googleearth verifica se existe mais eventos no mouseclick if (i3GEO.Interface.ATUAL === "googleearth" && i3GEO.eventos.MOUSECLIQUE.length > 1) { return; } var ntemas, etiquetas, j, retorna, targ = ""; if (!e) { e = window.event; } try { if (e.target) { targ = e.target; } else { if (e.srcElement) { targ = e.srcElement; } } if (targ.parentNode) { container = targ.parentNode.id; // alert(container); } } catch (erro) { targ = null; } ntemas = i3GEO.arvoreDeCamadas.CAMADAS.length; etiquetas = false; for (j = 0; j < ntemas; j += 1) { if (i3GEO.arvoreDeCamadas.CAMADAS[j].etiquetas !== "") { etiquetas = true; } } if (etiquetas === false) { return; } if (i3GEO.Interface.ATUAL === "googleearth") { i3GEO.Interface.googleearth.aguarde.visibility = "visible"; } retorna = function(retorno) { var classeCor, pos, temp, n, i, mostra, res, temas, ntemas, titulo, tips, j, ntips, ins, r, ds, nds, s, balloon, configura = i3GEO.configura, tipotip = configura.tipotip; i = $i("i3geo_rosa"); if (i) { i.style.display = "none"; } mostra = false; // try{ retorno = retorno.data; if (retorno !== "") { res = ""; temas = retorno; if (!temas) { return; } ntemas = temas.length; for (j = 0; j < ntemas; j += 1) { titulo = temas[j].nome; if (tipotip === "completo" || tipotip === "balao") { titulo = "" + titulo + "
"; } else { titulo = ""; } tips = (temas[j].resultado.tips).split(","); ntips = tips.length; ins = ""; ds = temas[j].resultado.dados; if (ds !== " " && ds[0] && ds[0] != " ") { try { nds = ds.length; classeCor = "toolTipBalaoTexto"; for (s = 0; s < nds; s += 1) { ins += "
"; for (r = 0; r < ntips; r += 1) { try { eval("var alias = ds[s]." + tips[r] + ".alias"); eval("var valor = ds[s]." + tips[r] + ".valor"); eval("var link = ds[s]." + tips[r] + ".link"); eval("var img = ds[s]." + tips[r] + ".img"); if (tipotip === "completo" || tipotip === "balao") { if (valor !== "" && link === "") { ins += "" + alias + " :" + valor + "
"; } if (valor !== "" && link !== "") { ins += "" + alias + " : " + valor + "
"; } if (img !== "") { ins += img + "
"; } mostra = true; } else { ins += "" + valor + "
"; mostra = true; } } catch (e) { } } if (classeCor === "toolTipBalaoTexto") { classeCor = "toolTipBalaoTexto1"; } else { classeCor = "toolTipBalaoTexto"; } ins += "
"; } } catch (e) { } } if (ins !== "") { res += titulo + ins; } } if (!mostra) { if ($i("tip")) { $i("tip").style.display = "none"; } } else { if (tipotip !== "balao") { n = i3GEO.janela.tip(); $i(n).style.textAlign = "left"; $i(n).innerHTML += res; } else { if (i3GEO.Interface.ATUAL === "googleearth") { i3GEO.Interface.googleearth.balao(res, objposicaocursor.ddx, objposicaocursor.ddy); i3GEO.Interface.googleearth.aguarde.visibility = "hidden"; } else { i3GEO.util.criaPin('marcaIdentifica', configura.locaplic + "/imagens/grabber.gif", "12px", "12px"); i3GEO.janela.TIPS.push('marcaIdentifica'); pos = i3GEO.util.posicionaImagemNoMapa("marcaIdentifica"); balloon = new Balloon(); BalloonConfig(balloon, 'GBox'); balloon.delayTime = 0; res = "
" + res + "
"; temp = $i('marcaIdentifica'); if (temp) { balloon.showTooltip(temp, res, null, null, null, pos[1], pos[0]); balloon.addCloseButton(); temp.onclick = function(e) { if (!e) { e = window.event; } document.body.removeChild(balloon.getEventTarget(e)); balloon.hideTooltip(); }; } } } } } if ($i(i3GEO.Interface.IDMAPA)) { $i(i3GEO.Interface.IDMAPA).title = ""; temp = "identifica"; if (i3GEO.Interface.ATIVAMENUCONTEXTO) { temp = "identifica_contexto"; } i3GEO.util.mudaCursor(configura.cursores, temp, i3GEO.Interface.IDMAPA, configura.locaplic); } }; xy = i3GEO.navega.centroDoMapa(); i3GEO.php.identifica3( retorna, objposicaocursor.ddx, objposicaocursor.ddy, "5", "tip", i3GEO.configura.locaplic, i3GEO.configura.sid, "ligados", i3GEO.parametros.mapexten); } }, /* * Function: compactaLayerGrafico * * Retorna uma string no formato base64 + JSON contendo as geometrias existentes no layer grafico do mapa Essas geometrias podem ser * criadas com o editor vetorial */ compactaLayerGrafico : function() { var geos = false, geometrias = [], n = 0, i, g; if (i3GEO.editorOL && i3GEO.desenho.layergrafico && i3GEO.desenho.layergrafico.features) { geos = i3GEO.desenho.layergrafico.features; n = geos.length; for (i = 0; i < n; i++) { g = { "atributos" : geos[i].attributes, "geometria" : geos[i].geometry.toString() }; geometrias.push(g); } } g = YAHOO.lang.JSON.stringify(geometrias); return i3GEO.util.base64encode(g); }, /* * Function: desCompactaLayerGrafico * * Descompacta um layer grafico criado com compactaLayerGrafico */ desCompactaLayerGrafico : function(geometrias) { geometrias = YAHOO.lang.JSON.parse(geometrias); // carrega o script do editor vetorial if (geometrias.length > 0) { var inicia = function() { i3GEO.barraDeBotoes.editor.ativaPainel(); var n = geometrias.length, i; for (i = 0; i < n; i++) { i3GEO.editorOL.adicionaFeatureWkt(geometrias[i].geometria, geometrias[i].atributos); } $i(i3GEO.editorOL.layergrafico.id).style.zIndex = 5000; }; i3GEO.util.scriptTag(i3GEO.configura.locaplic + "/mashups/openlayers.js", inicia, "openlayers.js", true); } }, /* * Function: restauraGraficos * * Descompacta graficos salvos no mapa atual */ restauraGraficos : function(graficos) { // carrega o script do editor vetorial if (graficos.length > 0) { var inicia = function() { i3GEOF.graficointerativo1.restauraGraficos(graficos); }; i3GEO.util.scriptTag( i3GEO.configura.locaplic + "/ferramentas/graficointerativo1/dependencias.php", inicia, "graficointerativo1", true); } }, // // aplica as preferencias armazenadas localmente ou vindas de um mapa salvo no banco de dados // aplicaPreferencias : function(cookies) { // aplica preferencias do usuario var props, nprops, i, temp = [], pint; if (!cookies) { cookies = i3GEO.util.pegaDadosLocal("preferenciasDoI3Geo"); } if (cookies) { props = cookies.split("::"); nprops = props.length; for (i = 0; i < nprops; i++) { try { temp = props[i].split("|"); pint = parseInt(temp[1], 10); if (temp[1] === 'true' || temp[1] === 'false') { if (temp[1] === 'true') { temp[1] = true; } if (temp[1] === 'false') { temp[1] = false; } eval(temp[0] + " = " + temp[1] + ";"); } else if (pint + "px" == temp[1]) { eval(temp[0] + " = '" + temp[1] + "';"); } else if (YAHOO.lang.isNumber(pint)) { eval(temp[0] + " = " + temp[1] + ";"); } else { eval(temp[0] + " = '" + temp[1] + "';"); } // algumas propriedades usam cookies if (temp[0] == "i3GEO.configura.mapaRefDisplay") { i3GEO.util.insereCookie("i3GEO.configura.mapaRefDisplay", temp[1]); } } catch (e) { } } } } }; // YAHOO.log("carregou classe mapa", "Classes i3geo");