diff --git a/classesjs/classe_ajuda.js b/classesjs/classe_ajuda.js index e9c5b6b..996a322 100644 --- a/classesjs/classe_ajuda.js +++ b/classesjs/classe_ajuda.js @@ -1,244 +1,275 @@ -/* -Title: Ajuda - -i3GEO.ajuda - -Manipulação das mensagens de ajuda. - -Permite definir a mensagem padrão da janela de mensagens. Abrir a janela e definir seu conteúdo. -Controla também o letreiro móvel que mostra mensagens especiais definidas em cada layer adicionado ao mapa. - -Exemplos: - - Se vc não quiser que a janela de ajuda seja aberta, inclua em seu HTML ou javascript - - i3GEO.ajuda.ATIVAJANELA = false; - - Para enviar uma mensagem para a janela, utilize - - i3GEO.ajuda.mostraJanela("texto"); - - -Arquivo: - -i3geo/classesjs/classe_ajuda.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 ADEQUACÃ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'){ +/** + * Title: Ajuda + * + * i3GEO.ajuda + * + * Manipulação das mensagens de ajuda. + * + * Permite definir a mensagem padrão da janela de mensagens. Abrir a + * janela e definir seu conteúdo. Controla também o letreiro + * móvel que mostra mensagens especiais definidas em cada layer + * adicionado ao mapa. + * + * Exemplos: + * + * Se vc não quiser que a janela de ajuda seja aberta, inclua em seu HTML + * ou javascript + * + * i3GEO.ajuda.ATIVAJANELA = false; + * + * Para enviar uma mensagem para a janela (quando estiver aberta), utilize + * + * i3GEO.ajuda.mostraJanela("texto"); + * + * Para enviar uma mensagem temporária utilize: + * + * + * Arquivo: + * + * i3geo/classesjs/classe_ajuda.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 ADEQUACÃ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') { var i3GEO = {}; } i3GEO.ajuda = { - /* - Propriedade: ATIVAJANELA - - Define se a janela de mensagens pode ou não ser aberta. - - Default: - - {true} - - Tipo: - {Boolean} - */ - ATIVAJANELA: true, - /* - Propriedade: DIVAJUDA - - Nome do elemento HTML, do tipo DIV, que irá conter os textos de ajuda. - - Se esse DIV for encontrado no mapa, os textos serão mostrados em seu interior. - - Default: - - {"i3geo_ajuda"} - - Tipo: - {String} - */ - DIVAJUDA: "i3geo_ajuda", - /* - Propriedade: DIVLETREIRO - - Id do elemento HTML onde será incluído o banner (letreiro) de mensagens. - - Esse tipo de mensagem é obtida do METADATA "MENSAGEM" que pode ser incluído em um layer. - - Default: - - {"i3geo_letreiro"} - - Tipo: - {String} - */ - DIVLETREIRO: "i3geo_letreiro", - /* - Propriedade: MENSAGEMPADRAO - - Mensagem que será incluída ao iniciar a janela de mensagens ou quando não houver - mensagem definida para o elemento sobre o qual o mouse estaciona. - - Default: - {$trad("p1")} - - Tipo: - {String} - */ - MENSAGEMPADRAO: $trad("p1"), - /* - Propriedade: TRANSICAOSUAVE - - Altera a transparência quando o mouse sobrepõe � janela e quando sai - - Tipo: - {boolean} - - Default: - {true} - */ - TRANSICAOSUAVE: true, - /* - Propriedade: OPACIDADE - - Valor da opacidade mínima utilizada quando TRANSICAOSUAVE for igual a true. - - Varia de 0 a 100 - - Tipo: - {numeric} - - Default: - {20} - */ - OPACIDADE: 20, - /* - Function: abreDoc - - Abre a documentacao do i3geo em uma nova janela do navegador - - Parametro: - - url - url que será adicionada a i3GEO.configura.locaplic - */ - abreDoc: function(url){ - if(!url) - {url = "/documentacao/index.html";} - window.open(i3GEO.configura.locaplic+url); + /** + * Propriedade: ATIVAJANELA + * + * Define se a janela de mensagens pode ou não ser aberta. + * + * Tipo {Boolean} - true + */ + ATIVAJANELA : true, + /** + * Propriedade: DIVAJUDA + * + * Nome do elemento HTML, do tipo DIV, que irá conter os textos de + * ajuda. + * + * Se esse DIV for encontrado no mapa, os textos serão mostrados em + * seu interior. + * + * Tipo {String} - i3geo_ajuda + */ + DIVAJUDA : "i3geo_ajuda", + /** + * Propriedade: DIVLETREIRO + * + * Id do elemento HTML onde será incluído o banner (letreiro) + * de mensagens. + * + * Esse tipo de mensagem é obtida do METADATA "MENSAGEM" que pode ser + * incluído em um layer. + * + * Tipo {String} - i3geo_letreir + */ + DIVLETREIRO : "i3geo_letreiro", + /** + * Propriedade: MENSAGEMPADRAO + * + * Mensagem que será incluída ao iniciar a janela de mensagens + * ou quando não houver mensagem definida para o elemento sobre o + * qual o mouse estaciona. + * + * Tipo {String} - $trad("p1") + */ + MENSAGEMPADRAO : $trad("p1"), + /** + * Propriedade: TRANSICAOSUAVE + * + * Altera a transparência quando o mouse sobrepõe a janela e + * quando sai + * + * Tipo {boolean} - true + */ + TRANSICAOSUAVE : true, + /** + * Propriedade: OPACIDADE + * + * Valor da opacidade mínima utilizada quando TRANSICAOSUAVE for + * igual a true. + * + * Varia de 0 a 100 + * + * Tipo {numeric} - 20 + */ + OPACIDADE : 20, + /** + * Function: abreDoc + * + * Abre a documentacao do i3geo em uma nova janela do navegador + * + * Parametro: + * + * url {string} - url que será adicionada a i3GEO.configura.locaplic + */ + abreDoc : function(url) { + if (!url) { + url = "/documentacao/index.html"; + } + window.open(i3GEO.configura.locaplic + + url); }, - /* - Function: abreJanela - - Abre a janela flutuante para mostrar as mensagens de ajuda. - - Essa função é executada na inicialização do i3GEO - */ - abreJanela: function(){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.ajuda.abreJanela()");} - try { - var nx,ny,corpo,texto,janela,temp, - largura=262, - YU = YAHOO.util, - pos = [20,i3GEO.parametros.h / 2]; - if(this.ATIVAJANELA === false){return;} + /** + * Function: abreJanela + * + * Abre a janela flutuante para mostrar as mensagens de ajuda. + * + * Essa função é executada na + * inicialização do i3GEO + */ + abreJanela : function() { + try { + var nx, ny, corpo, texto, janela, temp, largura = 262, YU = YAHOO.util, pos = [ + 20, i3GEO.parametros.h / 2 + ]; + if (this.ATIVAJANELA === false) { + return; + } temp = $i("contemFerramentas"); - if(temp){ - largura = parseInt(temp.style.width,10) - 5; + if (temp) { + largura = parseInt( + temp.style.width, + 10) - 5; } - if(!$i("janelaMenTexto")){ + if (!$i("janelaMenTexto")) { corpo = $i(i3GEO.Interface.IDCORPO); - if(corpo){pos = YU.Dom.getXY(corpo);} - else{ + if (corpo) { + pos = YU.Dom.getXY(corpo); + } else { corpo = $i(i3GEO.Interface.IDMAPA); - if(corpo){pos = YU.Dom.getXY(corpo);} + if (corpo) { + pos = YU.Dom.getXY(corpo); + } } - nx = pos[0] - largura - 3; + nx = pos[0] + - largura + - 3; ny = i3GEO.parametros.h - 78; - texto = '
'+i3GEO.ajuda.MENSAGEMPADRAO+'
'; - if(nx < 0) - {nx = 10;ny = ny - 50;} - janela = i3GEO.janela.cria(largura - 3,70,"",nx,ny," ","i3geo_janelaMensagens",false,"hd","","",true); + texto = '
' + + i3GEO.ajuda.MENSAGEMPADRAO + + '
'; + if (nx < 0) { + nx = 10; + ny = ny - 50; + } + janela = i3GEO.janela.cria( + largura - 3, + 70, + "", + nx, + ny, + " ", + "i3geo_janelaMensagens", + false, + "hd", + "", + "", + true); janela[2].innerHTML = texto; - YU.Event.addListener(janela[0].close, "click", i3GEO.ajuda.fechaJanela); + YU.Event.addListener( + janela[0].close, + "click", + i3GEO.ajuda.fechaJanela); this.ativaCookie(); } - } - catch(e){ - if(typeof(console) !== 'undefined'){console.error("i3GEO.ajuda.abreJanela "+e);} + } catch (e) { + if (typeof (console) !== 'undefined') { + console.error("i3GEO.ajuda.abreJanela " + + e); + } } }, - /* - Ativa o cookie g_janelaMen e inclui o valor "sim". - - Toda a vez que a janela é aberta, o cookie é ativado. - - Ativando-se o cookie, a janela de mensagens será aberta automaticamente a próxima vez que o i3geo for iniciado - */ - ativaCookie: function(){ + /** + * Ativa o cookie g_janelaMen e inclui o valor "sim". + * + * Toda a vez que a janela é aberta, o cookie é ativado. + * + * Ativando-se o cookie, a janela de mensagens será aberta + * automaticamente a próxima vez que o i3geo for iniciado + */ + ativaCookie : function() { var i = i3GEO.util.insereCookie; - i("g_janelaMen","sim"); - i("botoesAjuda","sim"); + i( + "g_janelaMen", + "sim"); + i( + "botoesAjuda", + "sim"); }, - /* - Busca mensagens no metadata "MENSAGEM" existentes nos layers do mapa. - - Se existirem mensagens, as mesmas são incluídas no letreiro. - - O letreiro deve ser um elemento do tipo INPUT (text). - - Parametro: - - mensagem {String} - (opcional) texto que será mostrado no letreiro. Se não for informado - será utilizado a variável i3GEO.parametros.mensagens - */ - ativaLetreiro: function(mensagem){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.ajuda.ativaLetreiro()");} + /** + * Busca mensagens no metadata "MENSAGEM" existentes nos layers do mapa. + * + * Se existirem mensagens, as mesmas são incluídas no + * letreiro. + * + * O letreiro deve ser um elemento do tipo INPUT (text). + * + * Parametro: + * + * mensagem {String} - (opcional) texto que será mostrado no + * letreiro. Se não for informado será utilizado a + * variável i3GEO.parametros.mensagens + */ + ativaLetreiro : function(mensagem) { var l; - if($i(i3GEO.ajuda.DIVLETREIRO)) - { - if(arguments.length === 0) - {mensagem = i3GEO.parametros.mensagens;} - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.ajuda.ativaLetreiro()") < 0) - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.ajuda.ativaLetreiro()");} - try - {clearTimeout(i3GEO.ajuda.tempoLetreiro);} - catch(e){i3GEO.ajuda.tempoLetreiro = "";} + if ($i(i3GEO.ajuda.DIVLETREIRO)) { + if (arguments.length === 0) { + mensagem = i3GEO.parametros.mensagens; + } + if (i3GEO.eventos.NAVEGAMAPA.toString().search( + "i3GEO.ajuda.ativaLetreiro()") < 0) { + i3GEO.eventos.NAVEGAMAPA.push("i3GEO.ajuda.ativaLetreiro()"); + } + try { + clearTimeout(i3GEO.ajuda.tempoLetreiro); + } catch (e) { + i3GEO.ajuda.tempoLetreiro = ""; + } l = $i(i3GEO.ajuda.DIVLETREIRO); - if(l.style.display==="none"){return;} - l.style.cursor="pointer"; - if(mensagem === ""){ + if (l.style.display === "none") { + return; + } + l.style.cursor = "pointer"; + if (mensagem === "") { l.value = ""; return; } - if (l.size === 1) - {l.size = i3GEO.parametros.w / 8;} - BMessage = mensagem + " ---Clique para parar--- "; - l.onclick = function() - {l.style.display = "none";}; - if (BMessage !== " ---Clique para parar--- "){ + if (l.size === 1) { + l.size = i3GEO.parametros.w / 8; + } + BMessage = mensagem + + " ---Clique para parar--- "; + l.onclick = function() { + l.style.display = "none"; + }; + if (BMessage !== " ---Clique para parar--- ") { BQuantas = 0; BSize = l.size; - BPos=BSize; + BPos = BSize; BSpeed = 1; BSpaces = ""; i3GEO.ajuda.mostraLetreiro(); @@ -246,87 +277,132 @@ i3GEO.ajuda = { i3GEO.ajuda.mostraLetreiro(mensagem); } }, - /* - Desativa o cookie g_janelaMen. - - Toda a vez que a janela é fechada, o cookie é desativado. - - Desativando-se o cookie, a janela de mensagens não será aberta automaticamente a próxima vez que o i3geo for iniciado - */ - desativaCookie: function(){ - i3GEO.util.insereCookie("g_janelaMen","nao"); + /** + * Desativa o cookie g_janelaMen. + * + * Toda a vez que a janela é fechada, o cookie é desativado. + * + * Desativando-se o cookie, a janela de mensagens não será + * aberta automaticamente a próxima vez que o i3geo for iniciado + */ + desativaCookie : function() { + i3GEO.util.insereCookie( + "g_janelaMen", + "nao"); }, - /* - Function: fechaJanela. - - Fecha a janela de ajuda. - */ - fechaJanela: function(){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.ajuda.fechaJanela()");} + /** + * Function: fechaJanela. + * + * Fecha a janela de ajuda. + */ + fechaJanela : function() { i3GEO.ajuda.desativaCookie(); - i3GEO.util.removeChild("i3geo_janelaMensagens_c",document.body); + i3GEO.util.removeChild( + "i3geo_janelaMensagens_c", + document.body); }, - /* - Function: mostraJanela - - Mostra um texto dentro da janela de mensagens padrão. - - Parametro: - - texto {String} - texto a ser mostrado - */ - mostraJanela: function(texto){ - var j = $i(this.DIVAJUDA), - k = $i("janelaMenTexto"), - jm = $i("i3geo_janelaMensagens"), - Dom = YAHOO.util.Dom, - h = parseInt(Dom.getStyle(jm,"height"),10); - if(j){ + /** + * Function: mostraJanela + * + * Mostra um texto dentro da janela de mensagens padrão. + * + * Parametro: + * + * texto {String} - texto a ser mostrado + */ + mostraJanela : function(texto) { + var j = $i(this.DIVAJUDA), k = $i("janelaMenTexto"), jm = $i("i3geo_janelaMensagens"), Dom = YAHOO.util.Dom, h = parseInt( + Dom.getStyle( + jm, + "height"), + 10); + if (j) { j.innerHTML = texto === "" ? "-" : texto; - } - else{ - if(h) - {Dom.setY("i3geo_janelaMensagens",Dom.getY(jm) + h);} - if(k) - {k.innerHTML = texto;} - if(this.TRANSICAOSUAVE){ - texto !== "" ? Dom.setStyle(jm,"opacity","1") : Dom.setStyle(jm,"opacity",(this.OPACIDADE / 100)); + } else { + if (h) { + Dom.setY( + "i3geo_janelaMensagens", + Dom.getY(jm) + + h); + } + if (k) { + k.innerHTML = texto; + } + if (this.TRANSICAOSUAVE) { + texto !== "" ? Dom.setStyle( + jm, + "opacity", + "1") : Dom.setStyle( + jm, + "opacity", + (this.OPACIDADE / 100)); + } + h = parseInt( + Dom.getStyle( + jm, + "height"), + 10); + if (h) { + Dom.setY( + jm, + Dom.getY(jm) + - h); } - h = parseInt(Dom.getStyle(jm,"height"),10); - if(h) - {Dom.setY(jm,Dom.getY(jm) - h);} } }, - /* - Function: mostraLetreiro - - Preenche o elemento INPUT com a mensagem de texto e faz a movimentação das letras. - - O aparecimento das letras é controlado por um temporizador e asmensagens são mostradas apenas duas vezes, - desde o início do redesenho do mapa. - */ - mostraLetreiro: function(){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.ajuda.mostraLetreiro()");} - for (var count=0; count   ", - "i3GEOF.linhaDoTempo", - false, - "hd", - "", - "", - "", - true, - i3GEO.configura.locaplic+"/imagens/oxygen/16x16/clock.png" - ); - atualizaLinhaDoTempo = function(){ - var doc = "", ifr = ""; - try{ - ifr = $i("wdocai"); - if (navn){ - if (ifr){ - doc = ifr.contentDocument; - } + heatmap : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.heatmap()", + "heatmap", + "heatmap"); + }, + /** + * Function: saiku + * + * Ferramenta SAIKU + */ + saiku : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.saiku()", + "saiku", + "saiku"); + }, + /** + * + * Ferramenta graficointerativo versao flash + */ + graficoInterativo : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.graficoInterativo()", + "graficointerativo", + "graficointerativo"); + }, + /** + * Function: graficoInterativo1 + * + * Ferramenta gráfico interativo + */ + graficoInterativo1 : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.graficoInterativo1()", + "graficointerativo1", + "graficointerativo1"); + }, + /** + * Function: linhaDoTempo + * + * Ferramenta linha do tempo + */ + linhaDoTempo : function() { + i3GEO.janela.cria( + "450px", + "350px", + i3GEO.configura.locaplic + + "/ferramentas/linhadotempo/index.php", + "", + "", + "Linha do tempo    ", + "i3GEOF.linhaDoTempo", + false, + "hd", + "", + "", + "", + true, + i3GEO.configura.locaplic + + "/imagens/oxygen/16x16/clock.png"); + atualizaLinhaDoTempo = function() { + var doc = "", ifr = ""; + try { + ifr = $i("wdocai"); + if (navn) { + if (ifr) { + doc = ifr.contentDocument; } - else{ - if(document.frames("wdocai")){ - doc = document.frames("wdocai").document; - } + } else { + if (document.frames("wdocai")) { + doc = document.frames("wdocai").document; } - doc.getElementById("tl") ? window.parent.wdocai.carregaDados() : i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()"); } - catch(e){ - i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()"); - if(typeof(console) !== 'undefined'){console.error("i3GEO.analise.linhaDoTempo "+e);} - } - }; - if(i3GEO.eventos.NAVEGAMAPA.toString().search("atualizaLinhaDoTempo()") < 0) - {i3GEO.eventos.NAVEGAMAPA.push("atualizaLinhaDoTempo()");} - var ifr = $i("wdocai"); - //ifr.style.height = "75%"; - ifr.style.width = "100%"; - }, - /* - Function: perfil - - Abre a janela de dialogo da ferramenta perfil - */ - perfil: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.perfil()","perfil","perfil"); - }, - /* - Function: gradePontos - - Abre a janela de dialogo da ferramenta gradepontos - */ - gradePontos: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePontos()","gradepontos","gradeDePontos"); - }, - /* - Function: gradePol - - Abre a janela de dialogo da ferramenta gradepol - */ - gradePol: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePol()","gradepol","gradeDePoligonos"); - }, - /* - Function: gradeHex - - Abre a janela de dialogo da ferramenta gradehex - */ - gradeHex: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradeHex()","gradehex","gradeDeHex"); - }, - /* - Function: analisaGeometrias - - Abre a janela de dialogo da ferramenta analisageometrias - */ - analisaGeometrias: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.analisaGeometrias()","analisageometrias","analisaGeometrias"); - }, - /* - Function: pontosdistri - - Abre a janela de dialogo da ferramenta pontosdistri - */ - pontosdistri: function(){ - i3GEO.parametros.r === "nao" ? i3GEO.janela.tempoMsg($trad("x22")) : i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontosdistri()","pontosdistri","pontosDistri"); - }, - /* - Function: pontoempoligono - - Abre a janela de dialogo da ferramenta pontoempoligono - */ - pontoempoligono: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontoempoligono()","pontoempoligono","pontoEmPoligono"); - }, - /* - Function: centromassa - - Abre a janela de dialogo da ferramenta centro medio - */ - centromassa: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centromassa()","centromassa","centromassa"); - }, - /* - Function: nptPol - - Abre a janela de dialogo da ferramenta nptpol - */ - nptPol: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.nptPol()","nptpol","nptpol"); - }, - /* - Function: buffer - - Abre a janela de dialogo da ferramenta buffer - */ - buffer: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.buffer()","buffer","buffer"); - }, - /* - Function: distanciaptpt - - Abre a janela de dialogo da ferramenta distanciaptpt - */ - distanciaptpt: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.distanciaptpt()","distanciaptpt","distanciaptpt"); - }, - /* - Function: centroide - - Abre a janela de dialogo da ferramenta centroide - */ - centroide: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centroide()","centroide","centroide"); - }, - /* - Function: dissolve - - Abre a janela de dialogo da ferramenta dissolve - */ - dissolve: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.dissolve()","dissolve","dissolve"); - }, - /* - Function: agrupaElementos - - Abre a janela de dialogo da ferramenta agrupaelementos - */ - agrupaElementos: function(){ - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.agrupaElementos()","agrupaelementos","agrupaElementos"); + doc.getElementById("tl") ? window.parent.wdocai.carregaDados() : i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()"); + } catch (e) { + i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()"); + } + }; + if (i3GEO.eventos.NAVEGAMAPA.toString().search( + "atualizaLinhaDoTempo()") < 0) { + i3GEO.eventos.NAVEGAMAPA.push("atualizaLinhaDoTempo()"); } + var ifr = $i("wdocai"); + // ifr.style.height = "75%"; + ifr.style.width = "100%"; }, /** - * i3GEO.analise.medeDistancia - * Ativa e controla a opcao de medicao de distancias. - * A medida e feita quando o usuario clica no mapa com esta opcao ativa - * Quando o botao e acionado, abre-se a janela que mostra o resultado da medida, o icone que segue o mouse e alterado. - * Para mostrar o resultado do calculo, e incluido um div especifico. + * Function: perfil + * + * Ferramenta perfil */ - medeDistancia:{ - /** - * Armazena os pontos clicados para realizar os calculos + perfil : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.perfil()", + "perfil", + "perfil"); + }, + /** + * Function: gradePontos + * + * Ferramenta grade de pontos + */ + gradePontos : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.gradePontos()", + "gradepontos", + "gradeDePontos"); + }, + /** + * Function: gradePol + * + * Ferramenta grade de polígonos + */ + gradePol : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.gradePol()", + "gradepol", + "gradeDePoligonos"); + }, + /** + * Function: gradeHex + * + * Ferramenta grade de hexágonos + */ + gradeHex : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.gradeHex()", + "gradehex", + "gradeDeHex"); + }, + /** + * Function: analisaGeometrias + * + * Ferramenta de análise de geometrias + */ + analisaGeometrias : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.analisaGeometrias()", + "analisageometrias", + "analisaGeometrias"); + }, + /** + * Function: pontosdistri + * + * Ferramenta de cálculo de distribuição de pontos + */ + pontosdistri : function() { + i3GEO.parametros.r === "nao" ? i3GEO.janela.tempoMsg($trad("x22")) : i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.pontosdistri()", + "pontosdistri", + "pontosDistri"); + }, + /** + * Function: pontoempoligono + * + * Ferramenta ponto em polígono + */ + pontoempoligono : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.pontoempoligono()", + "pontoempoligono", + "pontoEmPoligono"); + }, + /** + * Function: centromassa + * + * Ferramenta centro médio + */ + centromassa : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.centromassa()", + "centromassa", + "centromassa"); + }, + /** + * Function: nptPol + * + * Ferramenta número de pontos em polígono + */ + nptPol : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.nptPol()", + "nptpol", + "nptpol"); + }, + /** + * Function: buffer + * + * Ferramenta buffer + */ + buffer : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.buffer()", + "buffer", + "buffer"); + }, + /** + * Function: distanciaptpt + * + * Ferramenta distância entre pontos + */ + distanciaptpt : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.distanciaptpt()", + "distanciaptpt", + "distanciaptpt"); + }, + /** + * Function: centroide + * + * Ferramenta centróide + */ + centroide : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.centroide()", + "centroide", + "centroide"); + }, + /** + * Function: dissolve + * + * Ferramenta dissolve bordas comuns + */ + dissolve : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.dissolve()", + "dissolve", + "dissolve"); + }, + /** + * Function: agrupaElementos + * + * Ferramenta agrupa elementos + */ + agrupaElementos : function() { + i3GEO.util.dialogoFerramenta( + "i3GEO.analise.dialogo.agrupaElementos()", + "agrupaelementos", + "agrupaElementos"); + } + }, + /*************************************************************************** + * Class: medeDistancia + * + * Ativa e controla a opção de medição de + * distâncias. A medida é feita quando o usuário clica no mapa com esta + * opção ativa. Quando o botão e acionado, abre-se a janela que mostra o + * resultado da medida, o ícone que segue o mouse é alterado. Para mostrar o + * resultado do cálculo, é incluido um div específico. + */ + medeDistancia : { + /*********************************************************************** + * Armazena os pontos clicados para realizar os calculos + */ + pontos : {}, + /*********************************************************************** + * Function: inicia + * + * Inicia a operação de medição, abrindo a janela de resultados e + * criando os componentes necessários. São registrados os eventos de + * clique sobre o mapa e fechamento da janela de resultados + */ + inicia : function() { + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.analise.medeDistancia.criaJanela(); + i3GEO.analise.medeDistancia[i3GEO.Interface["ATUAL"]].inicia(); + }, + /*********************************************************************** + * Cria a janela para mostrar os resultados da medicao + */ + criaJanela : function() { + var novoel, ins, imagemxy, janela; + if (!$i("mostradistancia")) { + novoel = document.createElement("div"); + novoel.id = "mostradistancia"; + ins = '
 Distância aproximada    
' + + '
' + + '
' + + '
' + + '
' + + '' + + '' + + '' + + '' + + '
Raios ' + + '' + + 'Textos' + + ' Estilo:' + + i3GEO.desenho.caixaEstilos() + + ' 
' + + '
' + + '
'; + novoel.innerHTML = ins; + novoel.style.borderColor = "gray"; + document.body.appendChild(novoel); + janela = new YAHOO.widget.Panel( + "mostradistancia", + { + iframe : true, + width : "330px", + fixedcenter : false, + constraintoviewport : true, + underlay : "none", + close : true, + visible : true, + draggable : true, + modal : false + }); + YAHOO.i3GEO.janela.manager.register(janela); + janela.render(); + YAHOO.util.Event.addListener( + janela.close, + "click", + i3GEO.analise.medeDistancia.fechaJanela); + } else { + i3GEO.util.defineValor( + "mostradistancia_calculo", + "innerHTML", + ""); + janela = YAHOO.i3GEO.janela.manager.find("mostradistancia"); + } + janela.show(); + imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO)); + janela.moveTo( + imagemxy[0] + 150, + imagemxy[1]); + // + // botao que abre a ferramenta de calculo de perfis. + // pontosdistobj contem as coordenadas dos pontos + // + new YAHOO.widget.Button( + "i3GEObotaoPerfil", + { + onclick : { + fn : function() { + var js = i3GEO.configura.locaplic + + "/ferramentas/perfil/index.js"; + i3GEO.util.scriptTag( + js, + "i3GEOF.perfil.criaJanelaFlutuante(i3GEO.analise.pontosdistobj)", + "i3GEOF.perfil_script"); + } + } + }); + }, + /*********************************************************************** + * Fecha a janela e os elementos graficos criados para a ferramenta de + * medicao Chama a funcao de cada interface que complementam o processo + * de fechamento da janela + */ + fechaJanela : function() { + var janela; + i3GEO.eventos.cliquePerm.ativa(); + janela = YAHOO.i3GEO.janela.manager.find("mostradistancia"); + if (janela) { + YAHOO.i3GEO.janela.manager.remove(janela); + janela.destroy(); + } + i3GEO.barraDeBotoes.ativaIcone("pointer"); + i3GEO.analise.medeDistancia[i3GEO.Interface["ATUAL"]].fechaJanela(); + }, + /*********************************************************************** + * Funcoes especificas da interface openlayers + */ + openlayers : { + /******************************************************************* + * Inicializa o processo Cria a variavel para guardar os pontos + * Executa a funcao de inicializacao do desenho, que cria o layer + * para receber os graficos */ - pontos: {}, - /** - * Inicia a operacao de medicao, abrindo a janela de resultados e criando os componentes necessorios - * Sao registrados os eventos de clique sobre o mapa e fechamento da janela de resultados + inicia : function() { + var linha, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], controle = i3geoOL.getControlsBy( + "id", + "i3GeoMedeDistancia"); + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); + i3GEO.analise.medeDistancia.pontos = { + xpt : [], + ypt : [], + dist : [] + }; + if (controle.length === 0) { + linha = new OpenLayers.Control.DrawFeature( + i3GEO.desenho.layergrafico, + OpenLayers.Handler.Path, + { + autoActivate : true, + id : "i3GeoMedeDistancia", + type : OpenLayers.Control.TYPE_TOOL, + callbacks : { + done : function(feature) { + var f = new OpenLayers.Feature.Vector( + feature, + { + origem : "medeDistancia" + }, + { + graphicName : "square", + pointRadius : 10, + graphicOpacity : 1, + strokeWidth : estilo.linewidth, + strokeColor : estilo.linecolor + }); + i3GEO.desenho.layergrafico.addFeatures([ + f + ]); + if (i3GEO.Interface) { + i3GEO.Interface.openlayers.sobeLayersGraficos(); + } + i3GEO.analise.medeDistancia.openlayers.mostraParcial( + 0, + 0, + 0); + i3GEO.analise.medeDistancia.openlayers.inicia(); + }, + modify : function(point) { + var n, x1, y1, x2, y2, trecho, parcial, direcao; + n = i3GEO.analise.medeDistancia.pontos.ypt.length; + if (n > 0) { + x1 = i3GEO.analise.medeDistancia.pontos.xpt[n - 1]; + y1 = i3GEO.analise.medeDistancia.pontos.ypt[n - 1]; + x2 = point.x; + y2 = point.y; + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1 + + " " + + x2 + + " " + + y2); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + x2 = temp[2]; + y2 = temp[3]; + } + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + parcial = i3GEO.analise.medeDistancia.openlayers.somaDist(); + direcao = i3GEO.calculo.direcao( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.dd2dms( + direcao, + direcao); + direcao = direcao[0]; + i3GEO.analise.medeDistancia.openlayers.mostraParcial( + trecho, + parcial, + direcao); + } + }, + point : function(point) { + var n, x1, y1, x2, y2, trecho, temp, circ, label, raio, pontoRaio, + // registra os pontos e calcula a distancia + total = 0; + i3GEO.analise.medeDistancia.pontos.xpt.push(point.x); + i3GEO.analise.medeDistancia.pontos.ypt.push(point.y); + n = i3GEO.analise.medeDistancia.pontos.ypt.length; + if (n > 1) { + x1 = i3GEO.analise.medeDistancia.pontos.xpt[n - 2]; + y1 = i3GEO.analise.medeDistancia.pontos.ypt[n - 2]; + x2 = point.x; + y2 = point.y; + raio = point.distanceTo(new OpenLayers.Geometry.Point( + x1, + y1)); + pontoRaio = new OpenLayers.Geometry.Point( + x1, + y1); + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1 + + " " + + x2 + + " " + + y2); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + x2 = temp[2]; + y2 = temp[3]; + } + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + i3GEO.analise.medeDistancia.pontos.dist.push(trecho); + total = i3GEO.analise.medeDistancia.openlayers.somaDist(); + i3GEO.analise.medeDistancia.openlayers.mostraTotal( + trecho, + total); + // raio + if ($i("pararraios") + && $i("pararraios").checked === true) { + circ = new OpenLayers.Feature.Vector( + OpenLayers.Geometry.Polygon.createRegularPolygon( + pontoRaio, + raio, + 30), + { + origem : "medeDistanciaExcluir" + }, + { + fill : false, + strokeColor : estilo.circcolor, + strokeWidth : 1 + }); + i3GEO.desenho.layergrafico.addFeatures([ + circ + ]); + } + // desenha ponto + if ($i("parartextos") + && $i("parartextos").checked === true) { + label = new OpenLayers.Feature.Vector( + new OpenLayers.Geometry.Point( + point.x, + point.y), + { + origem : "medeDistanciaExcluir" + }, + { + graphicName : "square", + pointRadius : 3, + strokeColor : "black", + graphicOpacity : 1, + strokeWidth : 1, + fillColor : "white", + label : trecho.toFixed(3), + labelAlign : "rb", + fontColor : estilo.textcolor, + fontSize : 12, + fontWeight : "bold" + }); + i3GEO.desenho.layergrafico.addFeatures([ + label + ]); + } + } + } + } + }); + i3geoOL.addControl(linha); + } + }, + /******************************************************************* + * Soma os valores de distancia guardados em pontos.dist */ - inicia: function(){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeDistancia.inicia()");} - i3GEO.eventos.cliquePerm.desativa(); - i3GEO.analise.medeDistancia.criaJanela(); - i3GEO.analise.medeDistancia[i3GEO.Interface["ATUAL"]].inicia(); + somaDist : function() { + var n, i, total = 0; + n = i3GEO.analise.medeDistancia.pontos.dist.length; + for (i = 0; i < n; i++) { + total += i3GEO.analise.medeDistancia.pontos.dist[i]; + } + return total; }, - /** - * Cria a janela para mostrar os resultados da medicao + /******************************************************************* + * Fecha a janela que mostra os dados Pergunta ao usuario se os + * graficos devem ser removidos Os graficos sao marcados com o + * atributo "origem" Os raios e pontos sao sempre removidos */ - criaJanela: function(){ - var novoel,ins,imagemxy,janela; - if (!$i("mostradistancia")){ - novoel = document.createElement("div"); - novoel.id = "mostradistancia"; - ins = '
 Distância aproximada    
' + - '
' + - '
' + - '
' + - '
' + - '' + - '' + - '' + - '' + - '
Raios ' + - '' + - 'Textos' + - ' Estilo:'+i3GEO.desenho.caixaEstilos()+' 
' + - '
' + - '
'; - novoel.innerHTML = ins; - novoel.style.borderColor="gray"; - document.body.appendChild(novoel); - janela = new YAHOO.widget.Panel("mostradistancia", {iframe:true,width:"330px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } ); - YAHOO.i3GEO.janela.manager.register(janela); - janela.render(); - YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeDistancia.fechaJanela); + fechaJanela : function() { + var temp, controle = i3geoOL.getControlsBy( + "id", + "i3GeoMedeDistancia"), f = i3GEO.desenho.layergrafico.getFeaturesByAttribute( + "origem", + "medeDistancia"); + if (controle.length > 0) { + controle[0].deactivate(); + i3geoOL.removeControl(controle[0]); } - else{ - i3GEO.util.defineValor("mostradistancia_calculo","innerHTML",""); - janela = YAHOO.i3GEO.janela.manager.find("mostradistancia"); + if (f + && f.length > 0) { + temp = window.confirm($trad("x94")); + if (temp) { + i3GEO.desenho.layergrafico.destroyFeatures(f); + } + } + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute( + "origem", + "medeDistanciaExcluir"); + if (f + && f.length > 0) { + i3GEO.desenho.layergrafico.destroyFeatures(f); } - janela.show(); - imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO)); - janela.moveTo(imagemxy[0]+150,imagemxy[1]); - // - //botao que abre a ferramenta de calculo de perfis. - //pontosdistobj contem as coordenadas dos pontos - // - new YAHOO.widget.Button( - "i3GEObotaoPerfil", - {onclick:{fn: function(){ - var js = i3GEO.configura.locaplic+"/ferramentas/perfil/index.js"; - i3GEO.util.scriptTag(js,"i3GEOF.perfil.criaJanelaFlutuante(i3GEO.analise.pontosdistobj)","i3GEOF.perfil_script"); - }}} - ); }, - /** - *Fecha a janela e os elementos graficos criados para a ferramenta de medicao - *Chama a funcao de cada interface que complementam o processo de fechamento da janela + /******************************************************************* + * Mostra a totalizacao das linhas ja digitalizadas */ - fechaJanela: function(){ - var janela; - i3GEO.eventos.cliquePerm.ativa(); - janela = YAHOO.i3GEO.janela.manager.find("mostradistancia"); - if(janela){ - YAHOO.i3GEO.janela.manager.remove(janela); - janela.destroy(); + mostraTotal : function(trecho, total) { + var mostra = $i("mostradistancia_calculo"), texto; + if (mostra) { + texto = "" + + $trad("x96") + + ": " + + total.toFixed(3) + + " km" + + "
" + + $trad("x96") + + ": " + + (total * 1000).toFixed(2) + + " m" + + "
" + + $trad("x25") + + ": " + + i3GEO.calculo.metododistancia; + mostra.innerHTML = texto; } - i3GEO.barraDeBotoes.ativaIcone("pointer"); - i3GEO.analise.medeDistancia[i3GEO.Interface["ATUAL"]].fechaJanela(); }, - /** - * Funcoes especificas da interface openlayers + /******************************************************************* + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao + * do mouse */ - openlayers:{ - /** - * Inicializa o processo - * Cria a variavel para guardar os pontos - * Executa a funcao de inicializacao do desenho, que cria o layer para receber os graficos - */ - inicia: function(){ - var linha, - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], - controle = i3geoOL.getControlsBy("id","i3GeoMedeDistancia"); - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); - i3GEO.analise.medeDistancia.pontos = { - xpt: [], - ypt: [], - dist: [] - }; - if(controle.length === 0){ - linha = new OpenLayers.Control.DrawFeature( - i3GEO.desenho.layergrafico, - OpenLayers.Handler.Path, - { - autoActivate: true, - id: "i3GeoMedeDistancia", - type: OpenLayers.Control.TYPE_TOOL, - callbacks:{ - done: function(feature){ - var f = new OpenLayers.Feature.Vector( - feature, - { - origem: "medeDistancia" - }, - { - graphicName: "square", - pointRadius: 10, - graphicOpacity: 1, - strokeWidth: estilo.linewidth, - strokeColor: estilo.linecolor - } - ); - i3GEO.desenho.layergrafico.addFeatures([f]); - if(i3GEO.Interface){ - i3GEO.Interface.openlayers.sobeLayersGraficos(); - } - i3GEO.analise.medeDistancia.openlayers.mostraParcial(0,0,0); - i3GEO.analise.medeDistancia.openlayers.inicia(); - }, - modify: function(point){ - var n,x1,y1,x2,y2,trecho,parcial,direcao; - n = i3GEO.analise.medeDistancia.pontos.ypt.length; - if(n > 0){ - x1 = i3GEO.analise.medeDistancia.pontos.xpt[n-1]; - y1 = i3GEO.analise.medeDistancia.pontos.ypt[n-1]; - x2 = point.x; - y2 = point.y; - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1+" "+x2+" "+y2); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - x2 = temp[2]; - y2 = temp[3]; - } - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - parcial = i3GEO.analise.medeDistancia.openlayers.somaDist(); - direcao = i3GEO.calculo.direcao(x1,y1,x2,y2); - direcao = i3GEO.calculo.dd2dms(direcao,direcao); - direcao = direcao[0]; - i3GEO.analise.medeDistancia.openlayers.mostraParcial(trecho,parcial,direcao); - } - }, - point: function(point){ - var n,x1,y1,x2,y2,trecho,temp,circ,label,raio,pontoRaio, - //registra os pontos e calcula a distancia - total = 0; - i3GEO.analise.medeDistancia.pontos.xpt.push(point.x); - i3GEO.analise.medeDistancia.pontos.ypt.push(point.y); - n = i3GEO.analise.medeDistancia.pontos.ypt.length; - if(n > 1){ - x1 = i3GEO.analise.medeDistancia.pontos.xpt[n-2]; - y1 = i3GEO.analise.medeDistancia.pontos.ypt[n-2]; - x2 = point.x; - y2 = point.y; - raio = point.distanceTo(new OpenLayers.Geometry.Point(x1,y1)); - pontoRaio = new OpenLayers.Geometry.Point(x1,y1); - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1+" "+x2+" "+y2); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - x2 = temp[2]; - y2 = temp[3]; - } - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - i3GEO.analise.medeDistancia.pontos.dist.push(trecho); - total = i3GEO.analise.medeDistancia.openlayers.somaDist(); - i3GEO.analise.medeDistancia.openlayers.mostraTotal(trecho,total); - //raio - if($i("pararraios") && $i("pararraios").checked === true ){ - circ = new OpenLayers.Feature.Vector( - OpenLayers.Geometry.Polygon.createRegularPolygon( - pontoRaio, - raio, - 30 - ), - { - origem: "medeDistanciaExcluir" - }, - { - fill: false, - strokeColor: estilo.circcolor, - strokeWidth: 1 - } - ); - i3GEO.desenho.layergrafico.addFeatures([circ]); - } - //desenha ponto - if($i("parartextos") && $i("parartextos").checked === true ){ - label = new OpenLayers.Feature.Vector( - new OpenLayers.Geometry.Point(point.x,point.y), - { - origem: "medeDistanciaExcluir" - }, - { - graphicName: "square", - pointRadius: 3, - strokeColor: "black", - graphicOpacity: 1, - strokeWidth: 1, - fillColor: "white", - label: trecho.toFixed(3), - labelAlign: "rb", - fontColor: estilo.textcolor, - fontSize: 12, - fontWeight: "bold" - } - ); - i3GEO.desenho.layergrafico.addFeatures([label]); - } - } - } - } - } - ); - i3geoOL.addControl(linha); - } - }, - /** - * Soma os valores de distancia guardados em pontos.dist - */ - somaDist: function(){ - var n,i, - total = 0; - n = i3GEO.analise.medeDistancia.pontos.dist.length; - for(i=0;i 0){ - controle[0].deactivate(); - i3geoOL.removeControl(controle[0]); - } - if(f && f.length > 0){ - temp = window.confirm($trad("x94")); - if(temp){ - i3GEO.desenho.layergrafico.destroyFeatures(f); - } - } - f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeDistanciaExcluir"); - if(f && f.length > 0){ - i3GEO.desenho.layergrafico.destroyFeatures(f); - } - }, - /** - * Mostra a totalizacao das linhas ja digitalizadas - */ - mostraTotal: function(trecho,total){ - var mostra = $i("mostradistancia_calculo"), - texto; - if (mostra){ - texto = ""+$trad("x96")+": "+total.toFixed(3)+" km"+ - "
"+$trad("x96")+": "+(total*1000).toFixed(2)+" m"+ - "
"+$trad("x25")+": "+i3GEO.calculo.metododistancia; - mostra.innerHTML = texto; - } - }, - /** - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse - */ - mostraParcial: function(trecho,parcial,direcao){ - var mostra = $i("mostradistancia_calculo_movel"), - texto; - if (mostra){ - texto = ""+$trad("x95")+": "+trecho.toFixed(3)+" km"+ - "
"+$trad("x97")+": "+(parcial + trecho).toFixed(3)+" km" + - "
"+$trad("x23")+" (DMS): "+direcao; - mostra.innerHTML = texto; - } + mostraParcial : function(trecho, parcial, direcao) { + var mostra = $i("mostradistancia_calculo_movel"), texto; + if (mostra) { + texto = "" + + $trad("x95") + + ": " + + trecho.toFixed(3) + + " km" + + "
" + + $trad("x97") + + ": " + + (parcial + trecho).toFixed(3) + + " km" + + "
" + + $trad("x23") + + " (DMS): " + + direcao; + mostra.innerHTML = texto; } - }, - googlemaps:{ - /** - * Inicializa o processo - * Cria a variavel para guardar os pontos - * Executa a funcao de inicializacao do desenho, que cria o layer para receber os graficos - */ - inicia: function(){ - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); - i3GeoMap.setOptions({disableDoubleClickZoom:true}); - i3GeoMap.setOptions({draggableCursor:'crosshair'}); - var evtdblclick = null,evtclick = null,evtmousemove = null, - pontos = { - xpt: [], - ypt: [], - dist: [], - mvcLine: new google.maps.MVCArray(), - mvcMarkers: new google.maps.MVCArray(), - line: null, - polygon: null - }, - termina = function(){ - google.maps.event.removeListener(evtdblclick); - google.maps.event.removeListener(evtclick); - google.maps.event.removeListener(evtmousemove); - pontos.line.setOptions({clickable: true}); - google.maps.event.addListener(pontos.line, 'click', function(shape) { - if(shape.setEditable){ + } + }, + googlemaps : { + /******************************************************************* + * Inicializa o processo Cria a variavel para guardar os pontos + * Executa a funcao de inicializacao do desenho, que cria o layer + * para receber os graficos + */ + inicia : function() { + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); + i3GeoMap.setOptions({ + disableDoubleClickZoom : true + }); + i3GeoMap.setOptions({ + draggableCursor : 'crosshair' + }); + var evtdblclick = null, evtclick = null, evtmousemove = null, pontos = { + xpt : [], + ypt : [], + dist : [], + mvcLine : new google.maps.MVCArray(), + mvcMarkers : new google.maps.MVCArray(), + line : null, + polygon : null + }, termina = function() { + google.maps.event.removeListener(evtdblclick); + google.maps.event.removeListener(evtclick); + google.maps.event.removeListener(evtmousemove); + pontos.line.setOptions({ + clickable : true + }); + google.maps.event.addListener( + pontos.line, + 'click', + function(shape) { + if (shape.setEditable) { shape.setEditable(!shape.editable); } }); - if(pontos){ - i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine); - i3GEO.desenho.googlemaps.shapes.push(pontos.line); - pontos = null; - } - }; - evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) { - var x1,x2,y1,y2,trecho=0,total,n, - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao]; - // When the map is clicked, pass the LatLng obect to the measureAdd function + if (pontos) { + i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine); + i3GEO.desenho.googlemaps.shapes.push(pontos.line); + pontos = null; + } + }; + evtclick = google.maps.event.addListener( + i3GeoMap, + "click", + function(evt) { + var x1, x2, y1, y2, trecho = 0, total, n, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao]; + // When the map is clicked, pass the LatLng obect to the + // measureAdd function pontos.mvcLine.push(evt.latLng); pontos.xpt.push(evt.latLng.lng()); pontos.ypt.push(evt.latLng.lat()); n = pontos.xpt.length; - //desenha um circulo + // desenha um circulo if (pontos.mvcLine.getLength() > 1) { - x1 = pontos.xpt[n-2]; - y1 = pontos.ypt[n-2]; + x1 = pontos.xpt[n - 2]; + y1 = pontos.ypt[n - 2]; x2 = evt.latLng.lng(); y2 = evt.latLng.lat(); - //raio = google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new google.maps.LatLng(y1,x1)) - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); + // raio = + // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new + // google.maps.LatLng(y1,x1)) + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); pontos.dist.push(trecho); total = i3GEO.analise.medeDistancia.googlemaps.somaDist(pontos); - i3GEO.analise.medeDistancia.googlemaps.mostraTotal(trecho,total); - if($i("pararraios") && $i("pararraios").checked === true ){ - i3GEO.desenho.googlemaps.shapes.push( - new google.maps.Circle({ - map: i3GeoMap, - fillOpacity: 0, - clickable: false, - strokeColor: estilo.circcolor, - strokeOpacity: 1, - strokeWeight: estilo.linewidth, - center: new google.maps.LatLng(y1,x1), - radius: trecho*1000, - origem: "medeDistanciaExcluir" - }) - ); + i3GEO.analise.medeDistancia.googlemaps.mostraTotal( + trecho, + total); + if ($i("pararraios") + && $i("pararraios").checked === true) { + i3GEO.desenho.googlemaps.shapes.push(new google.maps.Circle( + { + map : i3GeoMap, + fillOpacity : 0, + clickable : false, + strokeColor : estilo.circcolor, + strokeOpacity : 1, + strokeWeight : estilo.linewidth, + center : new google.maps.LatLng( + y1, + x1), + radius : trecho * 1000, + origem : "medeDistanciaExcluir" + })); } } - //desenha uma marca no ponto - if($i("parartextos") && $i("parartextos").checked === true ){ - i3GEO.desenho.googlemaps.shapes.push( - new google.maps.Marker({ - map: i3GeoMap, - fillOpacity: 0, - clickable: false, - position:evt.latLng, - icon: { - path: google.maps.SymbolPath.CIRCLE, - scale: 2.5, - strokeColor: "#ffffff", - title: trecho.toFixed(0)+" km" - }, - origem: "medeDistanciaExcluir" - }) - ); + // desenha uma marca no ponto + if ($i("parartextos") + && $i("parartextos").checked === true) { + i3GEO.desenho.googlemaps.shapes.push(new google.maps.Marker( + { + map : i3GeoMap, + fillOpacity : 0, + clickable : false, + position : evt.latLng, + icon : { + path : google.maps.SymbolPath.CIRCLE, + scale : 2.5, + strokeColor : "#ffffff", + title : trecho.toFixed(0) + + " km" + }, + origem : "medeDistanciaExcluir" + })); } - //mais um ponto para criar uma linha movel + // mais um ponto para criar uma linha movel pontos.mvcLine.push(evt.latLng); }); - evtmousemove = google.maps.event.addListener(i3GeoMap, "mousemove", function(evt) { - if(!$i("mostradistancia_calculo")){ + evtmousemove = google.maps.event.addListener( + i3GeoMap, + "mousemove", + function(evt) { + if (!$i("mostradistancia_calculo")) { termina.call(); return; } - var x1,y1,x2,y2,direcao,parcial, - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], - n = pontos.xpt.length; + var x1, y1, x2, y2, direcao, parcial, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], n = pontos.xpt.length; // If there is more than one vertex on the line if (pontos.mvcLine.getLength() > 0) { // If the line hasn't been created yet if (!pontos.line) { // Create the line (google.maps.Polyline) - pontos.line = new google.maps.Polyline({ - map: i3GeoMap, - clickable: false, - strokeColor: estilo.linecolor, - strokeOpacity: 1, - strokeWeight: estilo.linewidth, - path:pontos.mvcLine, - origem: "medeDistancia" - }); + pontos.line = new google.maps.Polyline( + { + map : i3GeoMap, + clickable : false, + strokeColor : estilo.linecolor, + strokeOpacity : 1, + strokeWeight : estilo.linewidth, + path : pontos.mvcLine, + origem : "medeDistancia" + }); } pontos.mvcLine.pop(); pontos.mvcLine.push(evt.latLng); parcial = i3GEO.analise.medeDistancia.googlemaps.somaDist(pontos); - x1 = pontos.xpt[n-1]; - y1 = pontos.ypt[n-1]; + x1 = pontos.xpt[n - 1]; + y1 = pontos.ypt[n - 1]; x2 = evt.latLng.lng(); y2 = evt.latLng.lat(); - //raio = google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new google.maps.LatLng(y1,x1)) - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - direcao = i3GEO.calculo.direcao(x1,y1,x2,y2); - direcao = i3GEO.calculo.dd2dms(direcao,direcao); + // raio = + // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new + // google.maps.LatLng(y1,x1)) + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.direcao( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.dd2dms( + direcao, + direcao); direcao = direcao[0]; - i3GEO.analise.medeDistancia.googlemaps.mostraParcial(trecho,parcial,direcao); + i3GEO.analise.medeDistancia.googlemaps.mostraParcial( + trecho, + parcial, + direcao); } }); - evtdblclick = google.maps.event.addListener(i3GeoMap, "dblclick", function(evt) { + evtdblclick = google.maps.event.addListener( + i3GeoMap, + "dblclick", + function(evt) { termina.call(); }); - }, - /** - * Soma os valores de distancia guardados em pontos.dist - */ - somaDist: function(pontos){ - var n,i, - total = 0; - n = pontos.dist.length; - for(i=0;i 0){ - temp = window.confirm($trad("x94")); - if(temp){ - i3GEO.desenho.googlemaps.destroyFeatures(f); - } - } - f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem","medeDistanciaExcluir"); - if(f && f.length > 0){ - i3GEO.desenho.googlemaps.destroyFeatures(f); - } - }, - /** - * Mostra a totalizacao das linhas ja digitalizadas - */ - mostraTotal: function(trecho,total){ - var mostra = $i("mostradistancia_calculo"), - texto; - if (mostra){ - texto = ""+$trad("x96")+": "+total.toFixed(3)+" km"+ - "
"+$trad("x96")+": "+(total*1000).toFixed(2)+" m"+ - "
"+$trad("x25")+": "+i3GEO.calculo.metododistancia; - mostra.innerHTML = texto; - } - }, - /** - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse - */ - mostraParcial: function(trecho,parcial,direcao){ - var mostra = $i("mostradistancia_calculo_movel"), - texto; - if (mostra){ - texto = ""+$trad("x95")+": "+trecho.toFixed(3)+" km"+ - "
"+$trad("x97")+": "+(parcial + trecho).toFixed(3)+" km" + - "
"+$trad("x23")+" (DMS): "+direcao; - mostra.innerHTML = texto; - } + }, + /******************************************************************* + * Soma os valores de distancia guardados em pontos.dist + */ + somaDist : function(pontos) { + var n, i, total = 0; + n = pontos.dist.length; + for (i = 0; i < n; i++) { + total += pontos.dist[i]; } + return total; }, - googleearth:{ - pontosdistobj: { - xpt: [], - ypt: [], - dist: [], - distV: [], - xtela: [], - ytela: [], - ximg: [], - yimg: [], - linhas: [], - linhastemp: [] - }, - inicia: function(){ - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.googleearth.clique()") < 0) - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.googleearth.clique()");} - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.googleearth.movimento()") < 0) - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.googleearth.movimento()");} - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0) - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");} - }, - clique: function(){ - var pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj, - n,d,dd; - n = pontosdistobj.xpt.length; - pontosdistobj.xpt[n] = objposicaocursor.ddx; - pontosdistobj.ypt[n] = objposicaocursor.ddy; - pontosdistobj.xtela[n] = objposicaocursor.telax; - pontosdistobj.ytela[n] = objposicaocursor.telay; - pontosdistobj.ximg[n] = objposicaocursor.imgx; - pontosdistobj.yimg[n] = objposicaocursor.imgy; - pontosdistobj.dist[n] = 0; - if (n > 0){ - d = i3GEO.calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy); - pontosdistobj.dist[n] = d + pontosdistobj.dist[n-1]; - if($i("pararraios") && $i("pararraios").checked === true ){ - dd = Math.sqrt(((Math.pow((pontosdistobj.xpt[n] - pontosdistobj.xpt[n-1]),2)) + (Math.pow((pontosdistobj.ypt[n] - pontosdistobj.ypt[n-1]),2)) )); - i3GEO.desenho.googleearth.insereCirculo(pontosdistobj.xpt[n],pontosdistobj.ypt[n],dd,"","divGeometriasTemp"); - } - if($i("parartextos") && $i("parartextos").checked === true ){ - i3GEO.desenho.googleearth.insereMarca(d+" km",objposicaocursor.ddx,objposicaocursor.ddy,"","divGeometriasTemp"); - } - //cria a linha ligando os dois ultimos pontos - i3GEO.desenho.googleearth.insereLinha(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],pontosdistobj.xpt[n],pontosdistobj.ypt[n],"","divGeometriasTemp"); - } - }, - movimento: function(){ - var n,d,r,da, - pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj, - calculo = i3GEO.calculo; - n = pontosdistobj.xpt.length; - if (n > 0){ - d = calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy); - r = calculo.direcao(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy); - r = calculo.dd2dms(r,r); - r = r[0]; - d = d * 1; - da = d + pontosdistobj.dist[n-1]; - i3GEO.analise.medeDistancia.googleearth.mostraParcial(d,da,r); - } - }, - /** - * Fecha a janela que mostra os dados - * Pergunta ao usuario se os graficos devem ser removidos - * Os graficos sao marcados com o atributo "origem" - * Os raios e pontos sao sempre removidos - */ - fechaJanela: function(){ + /******************************************************************* + * Fecha a janela que mostra os dados Pergunta ao usuario se os + * graficos devem ser removidos Os graficos sao marcados com o + * atributo "origem" Os raios e pontos sao sempre removidos + */ + fechaJanela : function() { + i3GeoMap.setOptions({ + disableDoubleClickZoom : false + }); + i3GeoMap.setOptions({ + draggableCursor : undefined + }); + var f = i3GEO.desenho.googlemaps.getFeaturesByAttribute( + "origem", + "medeDistancia"); + if (f + && f.length > 0) { temp = window.confirm($trad("x94")); - if(temp){ - i3GEO.desenho.googleearth.removePlacemark("divGeometriasTemp"); - } - i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.googleearth.clique()"); - i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento.googleearth()"); - i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()"); - }, - /** - * Mostra a totalizacao das linhas ja digitalizadas - */ - mostraTotal: function(trecho,total){ - var mostra = $i("mostradistancia_calculo"), - texto; - if (mostra){ - texto = ""+$trad("x96")+": "+total.toFixed(3)+" km"+ - "
"+$trad("x96")+": "+(total*1000).toFixed(2)+" m"+ - "
"+$trad("x25")+": "+i3GEO.calculo.metododistancia; - mostra.innerHTML = texto; - } - }, - /** - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse - */ - mostraParcial: function(trecho,parcial,direcao){ - var mostra = $i("mostradistancia_calculo_movel"), - texto; - if (mostra){ - texto = ""+$trad("x95")+": "+trecho.toFixed(3)+" km"+ - "
"+$trad("x97")+": "+(parcial + trecho).toFixed(3)+" km" + - "
"+$trad("x23")+" (DMS): "+direcao; - mostra.innerHTML = texto; + if (temp) { + i3GEO.desenho.googlemaps.destroyFeatures(f); } } - } - }, - /* - i3GEO.analise.medeArea - - Ativa e controla a opcao de medicao de area. - - A medida e feita quando o usuario clica no mapa com esta opcao ativa - - Quando o botao e acionado, abre-se a janela que mostra o resultado da medida, o icone que segue o mouse e alterado. - - Para mostrar o resultado do calculo, e incluido um div especifico. - */ - medeArea:{ - /** - * Armazena os pontos clicados para realizar os calculos - */ - pontos: {}, - /* - Function: inicia - - Inicia a operacao de medicao, abrindo a janela de resultados e criando os componentes necessarios - - Sao registrados os eventos de clique sobre o mapa e fechamento da janela de resultados + f = i3GEO.desenho.googlemaps.getFeaturesByAttribute( + "origem", + "medeDistanciaExcluir"); + if (f + && f.length > 0) { + i3GEO.desenho.googlemaps.destroyFeatures(f); + } + }, + /******************************************************************* + * Mostra a totalizacao das linhas ja digitalizadas */ - inicia: function(){ - if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeDistancia.inicia()");} - i3GEO.eventos.cliquePerm.desativa(); - i3GEO.analise.medeArea.criaJanela(); - i3GEO.analise.medeArea[i3GEO.Interface["ATUAL"]].inicia(); + mostraTotal : function(trecho, total) { + var mostra = $i("mostradistancia_calculo"), texto; + if (mostra) { + texto = "" + + $trad("x96") + + ": " + + total.toFixed(3) + + " km" + + "
" + + $trad("x96") + + ": " + + (total * 1000).toFixed(2) + + " m" + + "
" + + $trad("x25") + + ": " + + i3GEO.calculo.metododistancia; + mostra.innerHTML = texto; + } }, - /* - Cria a janela para mostrar os resultados da medicao + /******************************************************************* + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao + * do mouse */ - criaJanela: function(){ - var novoel,ins,imagemxy,janela; - if (!$i("mostraarea")){ - novoel = document.createElement("div"); - novoel.id = "mostraarea"; - ins = '
Área aproximada    
' + - '
' + - 'Estilo: '+i3GEO.desenho.caixaEstilos()+'
' + - '
' + - '
' + - '
'; - novoel.innerHTML = ins; - novoel.style.borderColor="gray"; - document.body.appendChild(novoel); - janela = new YAHOO.widget.Panel("mostraarea", {width:"220px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } ); - YAHOO.i3GEO.janela.manager.register(janela); - janela.render(); - YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeArea.fechaJanela); + mostraParcial : function(trecho, parcial, direcao) { + var mostra = $i("mostradistancia_calculo_movel"), texto; + if (mostra) { + texto = "" + + $trad("x95") + + ": " + + trecho.toFixed(3) + + " km" + + "
" + + $trad("x97") + + ": " + + (parcial + trecho).toFixed(3) + + " km" + + "
" + + $trad("x23") + + " (DMS): " + + direcao; + mostra.innerHTML = texto; } - else{ - janela = YAHOO.i3GEO.janela.manager.find("mostraarea"); + } + }, + googleearth : { + pontosdistobj : { + xpt : [], + ypt : [], + dist : [], + distV : [], + xtela : [], + ytela : [], + ximg : [], + yimg : [], + linhas : [], + linhastemp : [] + }, + inicia : function() { + if (i3GEO.eventos.MOUSECLIQUE.toString().search( + "i3GEO.analise.medeDistancia.googleearth.clique()") < 0) { + i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.googleearth.clique()"); + } + if (i3GEO.eventos.MOUSEMOVE.toString().search( + "i3GEO.analise.medeDistancia.googleearth.movimento()") < 0) { + i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.googleearth.movimento()"); + } + if (i3GEO.eventos.NAVEGAMAPA.toString().search( + "i3GEO.analise.medeDistancia.fechaJanela()") < 0) { + i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()"); } - janela.show(); - imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO)); - janela.moveTo(imagemxy[0]+150,imagemxy[1]); }, - /* - Function: fechaJanela - - Fecha a janela e os elementos graficos criados para a ferramenta de medicao + clique : function() { + var pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj, n, d, dd; + n = pontosdistobj.xpt.length; + pontosdistobj.xpt[n] = objposicaocursor.ddx; + pontosdistobj.ypt[n] = objposicaocursor.ddy; + pontosdistobj.xtela[n] = objposicaocursor.telax; + pontosdistobj.ytela[n] = objposicaocursor.telay; + pontosdistobj.ximg[n] = objposicaocursor.imgx; + pontosdistobj.yimg[n] = objposicaocursor.imgy; + pontosdistobj.dist[n] = 0; + if (n > 0) { + d = i3GEO.calculo.distancia( + pontosdistobj.xpt[n - 1], + pontosdistobj.ypt[n - 1], + objposicaocursor.ddx, + objposicaocursor.ddy); + pontosdistobj.dist[n] = d + + pontosdistobj.dist[n - 1]; + if ($i("pararraios") + && $i("pararraios").checked === true) { + dd = Math.sqrt(((Math.pow( + (pontosdistobj.xpt[n] - pontosdistobj.xpt[n - 1]), + 2)) + (Math.pow( + (pontosdistobj.ypt[n] - pontosdistobj.ypt[n - 1]), + 2)))); + i3GEO.desenho.googleearth.insereCirculo( + pontosdistobj.xpt[n], + pontosdistobj.ypt[n], + dd, + "", + "divGeometriasTemp"); + } + if ($i("parartextos") + && $i("parartextos").checked === true) { + i3GEO.desenho.googleearth.insereMarca( + d + + " km", + objposicaocursor.ddx, + objposicaocursor.ddy, + "", + "divGeometriasTemp"); + } + // cria a linha ligando os dois ultimos pontos + i3GEO.desenho.googleearth.insereLinha( + pontosdistobj.xpt[n - 1], + pontosdistobj.ypt[n - 1], + pontosdistobj.xpt[n], + pontosdistobj.ypt[n], + "", + "divGeometriasTemp"); + } + }, + movimento : function() { + var n, d, r, da, pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj, calculo = i3GEO.calculo; + n = pontosdistobj.xpt.length; + if (n > 0) { + d = calculo.distancia( + pontosdistobj.xpt[n - 1], + pontosdistobj.ypt[n - 1], + objposicaocursor.ddx, + objposicaocursor.ddy); + r = calculo.direcao( + pontosdistobj.xpt[n - 1], + pontosdistobj.ypt[n - 1], + objposicaocursor.ddx, + objposicaocursor.ddy); + r = calculo.dd2dms( + r, + r); + r = r[0]; + d = d * 1; + da = d + + pontosdistobj.dist[n - 1]; + i3GEO.analise.medeDistancia.googleearth.mostraParcial( + d, + da, + r); + } + }, + /******************************************************************* + * Fecha a janela que mostra os dados Pergunta ao usuario se os + * graficos devem ser removidos Os graficos sao marcados com o + * atributo "origem" Os raios e pontos sao sempre removidos */ - fechaJanela: function(){ - var janela; - i3GEO.eventos.cliquePerm.ativa(); - janela = YAHOO.i3GEO.janela.manager.find("mostraarea"); - if(janela){ - YAHOO.i3GEO.janela.manager.remove(janela); - janela.destroy(); + fechaJanela : function() { + temp = window.confirm($trad("x94")); + if (temp) { + i3GEO.desenho.googleearth.removePlacemark("divGeometriasTemp"); } - i3GEO.barraDeBotoes.ativaIcone("pointer"); - i3GEO.analise.medeArea[i3GEO.Interface["ATUAL"]].fechaJanela(); + i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.googleearth.clique()"); + i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento.googleearth()"); + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()"); }, - /** - * Funcoes especificas da interface openlayers + /******************************************************************* + * Mostra a totalizacao das linhas ja digitalizadas */ - openlayers:{ - /** - * Inicializa o processo - * Cria a variavel para guardar os pontos - * Executa a funcao de inicializacao do desenho, que cria o layer para receber os graficos - */ - inicia: function(){ - var poligono, - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], - controle = i3geoOL.getControlsBy("id","i3GeoMedeArea"); - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); - i3GEO.analise.medeArea.pontos = { - xpt: [], - ypt: [], - dist: [] - }; - if(controle.length === 0){ - poligono = new OpenLayers.Control.DrawFeature( - i3GEO.desenho.layergrafico, - OpenLayers.Handler.Polygon, - { - autoActivate: true, - id: "i3GeoMedeArea", - type: OpenLayers.Control.TYPE_TOOL, - callbacks:{ - done: function(feature){ - var f = new OpenLayers.Feature.Vector( - feature, - { - origem: "medeArea" - }, - { - graphicName: "square", - pointRadius: 10, - graphicOpacity: 1, - strokeWidth: estilo.linewidth, - strokeColor: estilo.linecolor, - fillColor: estilo.fillcolor, - fillOpacity: 0.3 - } - ); - i3GEO.desenho.layergrafico.addFeatures([f]); - if(i3GEO.Interface){ - i3GEO.Interface.openlayers.sobeLayersGraficos(); - } - i3GEO.analise.medeArea.openlayers.mostraParcial(0,0,0,0); - i3GEO.analise.medeArea.openlayers.inicia(); - }, - modify: function(point,poligono){ - var n,x1,y1,x2,y2, - trecho = 0, - per = 0, - direcao = 0, - area = 0, - proj = new OpenLayers.Projection("EPSG:4326"); - n = i3GEO.analise.medeArea.pontos.ypt.length; - if(n > 1){ - x1 = i3GEO.analise.medeArea.pontos.xpt[n-1]; - y1 = i3GEO.analise.medeArea.pontos.ypt[n-1]; - x2 = point.x; - y2 = point.y; - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1+" "+x2+" "+y2); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - x2 = temp[2]; - y2 = temp[3]; - proj = new OpenLayers.Projection("EPSG:900913"); - } - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - direcao = i3GEO.calculo.direcao(x1,y1,x2,y2); - direcao = i3GEO.calculo.dd2dms(direcao,direcao); - direcao = direcao[0]; - per = i3GEO.analise.medeArea.openlayers.somaDist(); - //soma ate o primeiro ponto - x1 = i3GEO.analise.medeArea.pontos.xpt[0]; - y1 = i3GEO.analise.medeArea.pontos.ypt[0]; - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - } - per += i3GEO.calculo.distancia(x1,y1,x2,y2); - area = poligono.geometry.getGeodesicArea(proj); - i3GEO.analise.medeArea.openlayers.mostraParcial(trecho,per,area,direcao); - } + mostraTotal : function(trecho, total) { + var mostra = $i("mostradistancia_calculo"), texto; + if (mostra) { + texto = "" + + $trad("x96") + + ": " + + total.toFixed(3) + + " km" + + "
" + + $trad("x96") + + ": " + + (total * 1000).toFixed(2) + + " m" + + "
" + + $trad("x25") + + ": " + + i3GEO.calculo.metododistancia; + mostra.innerHTML = texto; + } + }, + /******************************************************************* + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao + * do mouse + */ + mostraParcial : function(trecho, parcial, direcao) { + var mostra = $i("mostradistancia_calculo_movel"), texto; + if (mostra) { + texto = "" + + $trad("x95") + + ": " + + trecho.toFixed(3) + + " km" + + "
" + + $trad("x97") + + ": " + + (parcial + trecho).toFixed(3) + + " km" + + "
" + + $trad("x23") + + " (DMS): " + + direcao; + mostra.innerHTML = texto; + } + } + } + }, + /** + * Class: medeArea + * + * Ativa e controla a opão de medição de área. + * + * A medida é feita quando o usuário clica no mapa com esta opção ativa + * + * Quando o botão é acionado, abre-se a janela que mostra o resultado da + * medida, o ícone que segue o mouse é alterado. + * + * Para mostrar o resultado do cálculo, é incluido um div específico. + */ + medeArea : { + /*********************************************************************** + * Armazena os pontos clicados para realizar os calculos + */ + pontos : {}, + /** + * Function: inicia + * + * Inicia a operação de medição, abrindo a janela de resultados e + * criando os componentes necessários + * + * São registrados os eventos de clique sobre o mapa e fechamento da + * janela de resultados + */ + inicia : function() { + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.analise.medeArea.criaJanela(); + i3GEO.analise.medeArea[i3GEO.Interface["ATUAL"]].inicia(); + }, + /** + * Cria a janela para mostrar os resultados da medicao + */ + criaJanela : function() { + var novoel, ins, imagemxy, janela; + if (!$i("mostraarea")) { + novoel = document.createElement("div"); + novoel.id = "mostraarea"; + ins = '
Área aproximada    
' + + '
' + + 'Estilo: ' + + i3GEO.desenho.caixaEstilos() + + '
' + + '
' + + '
' + + '
'; + novoel.innerHTML = ins; + novoel.style.borderColor = "gray"; + document.body.appendChild(novoel); + janela = new YAHOO.widget.Panel( + "mostraarea", + { + width : "220px", + fixedcenter : false, + constraintoviewport : true, + underlay : "none", + close : true, + visible : true, + draggable : true, + modal : false + }); + YAHOO.i3GEO.janela.manager.register(janela); + janela.render(); + YAHOO.util.Event.addListener( + janela.close, + "click", + i3GEO.analise.medeArea.fechaJanela); + } else { + janela = YAHOO.i3GEO.janela.manager.find("mostraarea"); + } + janela.show(); + imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO)); + janela.moveTo( + imagemxy[0] + 150, + imagemxy[1]); + }, + /** + * Function: fechaJanela + * + * Fecha a janela e os elementos graficos criados para a ferramenta de + * medicao + */ + fechaJanela : function() { + var janela; + i3GEO.eventos.cliquePerm.ativa(); + janela = YAHOO.i3GEO.janela.manager.find("mostraarea"); + if (janela) { + YAHOO.i3GEO.janela.manager.remove(janela); + janela.destroy(); + } + i3GEO.barraDeBotoes.ativaIcone("pointer"); + i3GEO.analise.medeArea[i3GEO.Interface["ATUAL"]].fechaJanela(); + }, + /*********************************************************************** + * Funcoes especificas da interface openlayers + */ + openlayers : { + /******************************************************************* + * Inicializa o processo Cria a variavel para guardar os pontos + * Executa a funcao de inicializacao do desenho, que cria o layer + * para receber os graficos + */ + inicia : function() { + var poligono, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], controle = i3geoOL.getControlsBy( + "id", + "i3GeoMedeArea"); + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); + i3GEO.analise.medeArea.pontos = { + xpt : [], + ypt : [], + dist : [] + }; + if (controle.length === 0) { + poligono = new OpenLayers.Control.DrawFeature( + i3GEO.desenho.layergrafico, + OpenLayers.Handler.Polygon, + { + autoActivate : true, + id : "i3GeoMedeArea", + type : OpenLayers.Control.TYPE_TOOL, + callbacks : { + done : function(feature) { + var f = new OpenLayers.Feature.Vector( + feature, + { + origem : "medeArea" }, - point: function(point,poligono){ - var n,x1,y1,x2,y2,temp,label, - //registra os pontos e calcula a distancia - per = 0, - trecho = 0, - area = 0, - proj = new OpenLayers.Projection("EPSG:4326"); - i3GEO.analise.medeArea.pontos.xpt.push(point.x); - i3GEO.analise.medeArea.pontos.ypt.push(point.y); - n = i3GEO.analise.medeArea.pontos.ypt.length; - if(n > 1){ - x1 = i3GEO.analise.medeArea.pontos.xpt[n-2]; - y1 = i3GEO.analise.medeArea.pontos.ypt[n-2]; - x2 = point.x; - y2 = point.y; - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1+" "+x2+" "+y2); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - x2 = temp[2]; - y2 = temp[3]; - proj = new OpenLayers.Projection("EPSG:900913"); - } - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - i3GEO.analise.medeArea.pontos.dist.push(trecho); - per = i3GEO.analise.medeArea.openlayers.somaDist(); - //soma ate o primeiro ponto - x1 = i3GEO.analise.medeArea.pontos.xpt[0]; - y1 = i3GEO.analise.medeArea.pontos.ypt[0]; - //projeta - if(i3GEO.Interface.openlayers.googleLike){ - temp = i3GEO.util.extOSM2Geo(x1+" "+y1); - temp = temp.split(" "); - x1 = temp[0]; - y1 = temp[1]; - } - per += i3GEO.calculo.distancia(x1,y1,x2,y2); - //desenha ponto - //if($i("parartextos") && $i("parartextos").checked === true ){ - label = new OpenLayers.Feature.Vector( - new OpenLayers.Geometry.Point(point.x,point.y), - { - origem: "medeAreaExcluir" - }, - { - graphicName: "square", - pointRadius: 3, - strokeColor: "black", - graphicOpacity: 1, - strokeWidth: 1, - fillColor: "white", - label: trecho.toFixed(3), - labelAlign: "rb", - fontColor: estilo.textcolor, - fontSize: 12, - fontWeight: "bold" - } - ); - i3GEO.desenho.layergrafico.addFeatures([label]); - if(n > 2){ - area = poligono.getGeodesicArea(proj); - } - } - i3GEO.analise.medeArea.openlayers.mostraTotal(per,area); + { + graphicName : "square", + pointRadius : 10, + graphicOpacity : 1, + strokeWidth : estilo.linewidth, + strokeColor : estilo.linecolor, + fillColor : estilo.fillcolor, + fillOpacity : 0.3 + }); + i3GEO.desenho.layergrafico.addFeatures([ + f + ]); + if (i3GEO.Interface) { + i3GEO.Interface.openlayers.sobeLayersGraficos(); + } + i3GEO.analise.medeArea.openlayers.mostraParcial( + 0, + 0, + 0, + 0); + i3GEO.analise.medeArea.openlayers.inicia(); + }, + modify : function(point, poligono) { + var n, x1, y1, x2, y2, trecho = 0, per = 0, direcao = 0, area = 0, proj = new OpenLayers.Projection( + "EPSG:4326"); + n = i3GEO.analise.medeArea.pontos.ypt.length; + if (n > 1) { + x1 = i3GEO.analise.medeArea.pontos.xpt[n - 1]; + y1 = i3GEO.analise.medeArea.pontos.ypt[n - 1]; + x2 = point.x; + y2 = point.y; + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1 + + " " + + x2 + + " " + + y2); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + x2 = temp[2]; + y2 = temp[3]; + proj = new OpenLayers.Projection( + "EPSG:900913"); + } + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.direcao( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.dd2dms( + direcao, + direcao); + direcao = direcao[0]; + per = i3GEO.analise.medeArea.openlayers.somaDist(); + // soma ate o primeiro ponto + x1 = i3GEO.analise.medeArea.pontos.xpt[0]; + y1 = i3GEO.analise.medeArea.pontos.ypt[0]; + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + } + per += i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + area = poligono.geometry.getGeodesicArea(proj); + i3GEO.analise.medeArea.openlayers.mostraParcial( + trecho, + per, + area, + direcao); + } + }, + point : function(point, poligono) { + var n, x1, y1, x2, y2, temp, label, + // registra os pontos e calcula a distancia + per = 0, trecho = 0, area = 0, proj = new OpenLayers.Projection( + "EPSG:4326"); + i3GEO.analise.medeArea.pontos.xpt.push(point.x); + i3GEO.analise.medeArea.pontos.ypt.push(point.y); + n = i3GEO.analise.medeArea.pontos.ypt.length; + if (n > 1) { + x1 = i3GEO.analise.medeArea.pontos.xpt[n - 2]; + y1 = i3GEO.analise.medeArea.pontos.ypt[n - 2]; + x2 = point.x; + y2 = point.y; + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1 + + " " + + x2 + + " " + + y2); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + x2 = temp[2]; + y2 = temp[3]; + proj = new OpenLayers.Projection( + "EPSG:900913"); + } + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + i3GEO.analise.medeArea.pontos.dist.push(trecho); + per = i3GEO.analise.medeArea.openlayers.somaDist(); + // soma ate o primeiro ponto + x1 = i3GEO.analise.medeArea.pontos.xpt[0]; + y1 = i3GEO.analise.medeArea.pontos.ypt[0]; + // projeta + if (i3GEO.Interface.openlayers.googleLike) { + temp = i3GEO.util.extOSM2Geo(x1 + + " " + + y1); + temp = temp.split(" "); + x1 = temp[0]; + y1 = temp[1]; + } + per += i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + // desenha ponto + // if($i("parartextos") && + // $i("parartextos").checked === true ){ + label = new OpenLayers.Feature.Vector( + new OpenLayers.Geometry.Point( + point.x, + point.y), + { + origem : "medeAreaExcluir" + }, + { + graphicName : "square", + pointRadius : 3, + strokeColor : "black", + graphicOpacity : 1, + strokeWidth : 1, + fillColor : "white", + label : trecho.toFixed(3), + labelAlign : "rb", + fontColor : estilo.textcolor, + fontSize : 12, + fontWeight : "bold" + }); + i3GEO.desenho.layergrafico.addFeatures([ + label + ]); + if (n > 2) { + area = poligono.getGeodesicArea(proj); } } + i3GEO.analise.medeArea.openlayers.mostraTotal( + per, + area); } - ); - i3geoOL.addControl(poligono); - } - }, - /** - * Soma os valores de distancia guardados em pontos.dist - */ - somaDist: function(){ - var n,i, - total = 0; - n = i3GEO.analise.medeArea.pontos.dist.length; - for(i=0;i 0){ - controle[0].deactivate(); - i3geoOL.removeControl(controle[0]); - } - if(f && f.length > 0){ - temp = window.confirm($trad("x94")); - if(temp){ - i3GEO.desenho.layergrafico.destroyFeatures(f); - } - } - f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeAreaExcluir"); - if(f && f.length > 0){ + } + }); + i3geoOL.addControl(poligono); + } + }, + /******************************************************************* + * Soma os valores de distancia guardados em pontos.dist + */ + somaDist : function() { + var n, i, total = 0; + n = i3GEO.analise.medeArea.pontos.dist.length; + for (i = 0; i < n; i++) { + total += i3GEO.analise.medeArea.pontos.dist[i]; + } + return total; + }, + /******************************************************************* + * Fecha a janela que mostra os dados Pergunta ao usuario se os + * graficos devem ser removidos Os graficos sao marcados com o + * atributo "origem" Os raios e pontos sao sempre removidos + */ + fechaJanela : function() { + var temp, controle = i3geoOL.getControlsBy( + "id", + "i3GeoMedeArea"), f = i3GEO.desenho.layergrafico.getFeaturesByAttribute( + "origem", + "medeArea"); + if (controle.length > 0) { + controle[0].deactivate(); + i3geoOL.removeControl(controle[0]); + } + if (f + && f.length > 0) { + temp = window.confirm($trad("x94")); + if (temp) { i3GEO.desenho.layergrafico.destroyFeatures(f); } - }, - /** - * Mostra a totalizacao das linhas ja digitalizadas - */ - mostraTotal: function(per,area){ - var mostra = $i("mostraarea_calculo"), - texto; - if (mostra){ - texto = ""+$trad("d21at")+": "+(area/1000000).toFixed(3)+" km2"+ - "
"+$trad("d21at")+": "+(area/10000).toFixed(2)+" ha"+ - "
"+$trad("x98")+": "+(per).toFixed(2)+" km"+ - "
"+$trad("x25")+": "+i3GEO.calculo.metododistancia; - mostra.innerHTML = texto; - } - }, - /** - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse - */ - mostraParcial: function(trecho,per,area,direcao){ - var mostra = $i("mostraarea_calculo_parcial"), - texto; - if (mostra){ - texto = ""+$trad("d21at")+": "+(area/1000000).toFixed(3)+" km2"+ - "
"+$trad("d21at")+": "+(area/10000).toFixed(2)+" ha"+ - "
"+$trad("x95")+": "+trecho.toFixed(3)+" km"+ - "
"+$trad("x98")+": "+(per).toFixed(3)+" km" + - "
"+$trad("x23")+" (DMS): "+direcao; - mostra.innerHTML = texto; - } + } + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute( + "origem", + "medeAreaExcluir"); + if (f + && f.length > 0) { + i3GEO.desenho.layergrafico.destroyFeatures(f); } }, - googlemaps: { - /** - * Inicializa o processo - * Cria a variavel para guardar os pontos - * Executa a funcao de inicializacao do desenho, que cria o layer para receber os graficos - */ - inicia: function(){ - if(!google.maps.geometry){ - alert($trad("x99")); - return; - } - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); - i3GeoMap.setOptions({disableDoubleClickZoom:true}); - i3GeoMap.setOptions({draggableCursor:'crosshair'}); - var evtdblclick = null, - evtclick = null, - evtmousemove = null, - pontos = { - xpt: [], - ypt: [], - dist: [], - mvcLine: new google.maps.MVCArray(), - mvcMarkers: new google.maps.MVCArray(), - line: null, - polygon: null - }, - termina = function(){ - google.maps.event.removeListener(evtdblclick); - google.maps.event.removeListener(evtclick); - google.maps.event.removeListener(evtmousemove); - pontos.line.setOptions({clickable: true}); - google.maps.event.addListener(pontos.line, 'click', function(shape) { - if(shape.setEditable){ + /******************************************************************* + * Mostra a totalizacao das linhas ja digitalizadas + */ + mostraTotal : function(per, area) { + var mostra = $i("mostraarea_calculo"), texto; + if (mostra) { + texto = "" + + $trad("d21at") + + ": " + + (area / 1000000).toFixed(3) + + " km2" + + "
" + + $trad("d21at") + + ": " + + (area / 10000).toFixed(2) + + " ha" + + "
" + + $trad("x98") + + ": " + + (per).toFixed(2) + + " km" + + "
" + + $trad("x25") + + ": " + + i3GEO.calculo.metododistancia; + mostra.innerHTML = texto; + } + }, + /******************************************************************* + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao + * do mouse + */ + mostraParcial : function(trecho, per, area, direcao) { + var mostra = $i("mostraarea_calculo_parcial"), texto; + if (mostra) { + texto = "" + + $trad("d21at") + + ": " + + (area / 1000000).toFixed(3) + + " km2" + + "
" + + $trad("d21at") + + ": " + + (area / 10000).toFixed(2) + + " ha" + + "
" + + $trad("x95") + + ": " + + trecho.toFixed(3) + + " km" + + "
" + + $trad("x98") + + ": " + + (per).toFixed(3) + + " km" + + "
" + + $trad("x23") + + " (DMS): " + + direcao; + mostra.innerHTML = texto; + } + } + }, + googlemaps : { + /******************************************************************* + * Inicializa o processo Cria a variavel para guardar os pontos + * Executa a funcao de inicializacao do desenho, que cria o layer + * para receber os graficos + */ + inicia : function() { + if (!google.maps.geometry) { + alert($trad("x99")); + return; + } + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia(); + i3GeoMap.setOptions({ + disableDoubleClickZoom : true + }); + i3GeoMap.setOptions({ + draggableCursor : 'crosshair' + }); + var evtdblclick = null, evtclick = null, evtmousemove = null, pontos = { + xpt : [], + ypt : [], + dist : [], + mvcLine : new google.maps.MVCArray(), + mvcMarkers : new google.maps.MVCArray(), + line : null, + polygon : null + }, termina = function() { + google.maps.event.removeListener(evtdblclick); + google.maps.event.removeListener(evtclick); + google.maps.event.removeListener(evtmousemove); + pontos.line.setOptions({ + clickable : true + }); + google.maps.event.addListener( + pontos.line, + 'click', + function(shape) { + if (shape.setEditable) { shape.setEditable(!shape.editable); } }); - if(pontos){ - i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine); - i3GEO.desenho.googlemaps.shapes.push(pontos.line); - pontos = null; - } - }; - evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) { - var area=0,per; - // When the map is clicked, pass the LatLng obect to the measureAdd function + if (pontos) { + i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine); + i3GEO.desenho.googlemaps.shapes.push(pontos.line); + pontos = null; + } + }; + evtclick = google.maps.event.addListener( + i3GeoMap, + "click", + function(evt) { + var area = 0, per; + // When the map is clicked, pass the LatLng obect to the + // measureAdd function pontos.mvcLine.push(evt.latLng); pontos.xpt.push(evt.latLng.lng()); pontos.ypt.push(evt.latLng.lat()); - //desenha um circulo + // desenha um circulo if (pontos.mvcLine.getLength() > 0) { per = google.maps.geometry.spherical.computeLength(pontos.mvcLine); area = google.maps.geometry.spherical.computeArea(pontos.mvcLine); - i3GEO.analise.medeArea.googlemaps.mostraTotal(per,area); + i3GEO.analise.medeArea.googlemaps.mostraTotal( + per, + area); } - //desenha uma marca no ponto - i3GEO.desenho.googlemaps.shapes.push( - new google.maps.Marker({ - map: i3GeoMap, - fillOpacity: 0, - clickable: false, - position:evt.latLng, - icon: { - path: google.maps.SymbolPath.CIRCLE, - scale: 2.5, - strokeColor: "#ffffff" - }, - origem: "medeAreaExcluir" - }) - ); - //mais um ponto para criar uma linha movel + // desenha uma marca no ponto + i3GEO.desenho.googlemaps.shapes.push(new google.maps.Marker( + { + map : i3GeoMap, + fillOpacity : 0, + clickable : false, + position : evt.latLng, + icon : { + path : google.maps.SymbolPath.CIRCLE, + scale : 2.5, + strokeColor : "#ffffff" + }, + origem : "medeAreaExcluir" + })); + // mais um ponto para criar uma linha movel pontos.mvcLine.push(evt.latLng); }); - evtmousemove = google.maps.event.addListener(i3GeoMap, "mousemove", function(evt) { - if(!$i("mostraarea_calculo")){ + evtmousemove = google.maps.event.addListener( + i3GeoMap, + "mousemove", + function(evt) { + if (!$i("mostraarea_calculo")) { termina.call(); return; } - var x1,y1,x2,y2,direcao,per,area, - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], - n = pontos.xpt.length; + var x1, y1, x2, y2, direcao, per, area, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], n = pontos.xpt.length; // If there is more than one vertex on the line if (pontos.mvcLine.getLength() > 0) { // If the line hasn't been created yet if (!pontos.line) { // Create the line (google.maps.Polyline) - pontos.line = new google.maps.Polygon({ - map: i3GeoMap, - clickable: false, - strokeColor: estilo.linecolor, - strokeOpacity: 1, - strokeWeight: estilo.linewidth, - path:pontos.mvcLine, - origem: "medeArea" - }); + pontos.line = new google.maps.Polygon( + { + map : i3GeoMap, + clickable : false, + strokeColor : estilo.linecolor, + strokeOpacity : 1, + strokeWeight : estilo.linewidth, + path : pontos.mvcLine, + origem : "medeArea" + }); } pontos.mvcLine.pop(); pontos.mvcLine.push(evt.latLng); per = google.maps.geometry.spherical.computeLength(pontos.mvcLine); - x1 = pontos.xpt[n-1]; - y1 = pontos.ypt[n-1]; + x1 = pontos.xpt[n - 1]; + y1 = pontos.ypt[n - 1]; x2 = evt.latLng.lng(); y2 = evt.latLng.lat(); - trecho = i3GEO.calculo.distancia(x1,y1,x2,y2); - direcao = i3GEO.calculo.direcao(x1,y1,x2,y2); - direcao = i3GEO.calculo.dd2dms(direcao,direcao); + trecho = i3GEO.calculo.distancia( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.direcao( + x1, + y1, + x2, + y2); + direcao = i3GEO.calculo.dd2dms( + direcao, + direcao); direcao = direcao[0]; area = google.maps.geometry.spherical.computeArea(pontos.mvcLine); - i3GEO.analise.medeArea.googlemaps.mostraParcial(trecho,per,area,direcao); + i3GEO.analise.medeArea.googlemaps.mostraParcial( + trecho, + per, + area, + direcao); } }); - evtdblclick = google.maps.event.addListener(i3GeoMap, "dblclick", function(evt) { - pontos.mvcLine.push(new google.maps.LatLng(pontos.ypt[0],pontos.xpt[0])); - var per = google.maps.geometry.spherical.computeLength(pontos.mvcLine), - area = google.maps.geometry.spherical.computeArea(pontos.mvcLine); - i3GEO.analise.medeArea.googlemaps.mostraTotal(per,area); + evtdblclick = google.maps.event.addListener( + i3GeoMap, + "dblclick", + function(evt) { + pontos.mvcLine.push(new google.maps.LatLng( + pontos.ypt[0], + pontos.xpt[0])); + var per = google.maps.geometry.spherical.computeLength(pontos.mvcLine), area = google.maps.geometry.spherical.computeArea(pontos.mvcLine); + i3GEO.analise.medeArea.googlemaps.mostraTotal( + per, + area); termina.call(); }); - }, - /** - * Soma os valores de distancia guardados em pontos.dist - */ - somaDist: function(pontos){ - var n,i, - total = 0; - n = pontos.dist.length; - for(i=0;i 0){ - temp = window.confirm($trad("x94")); - if(temp){ - i3GEO.desenho.googlemaps.destroyFeatures(f); - } - } - f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem","medeAreaExcluir"); - if(f && f.length > 0){ + }, + /*** + * Soma os valores de distancia guardados em pontos.dist + */ + somaDist : function(pontos) { + var n, i, total = 0; + n = pontos.dist.length; + for (i = 0; i < n; i++) { + total += pontos.dist[i]; + } + return total; + }, + /*** + * Fecha a janela que mostra os dados + * Pergunta ao usuario se os graficos devem ser removidos + * Os graficos sao marcados com o atributo "origem" + * Os raios e pontos sao sempre removidos + */ + fechaJanela : function() { + i3GeoMap.setOptions({ + disableDoubleClickZoom : false + }); + i3GeoMap.setOptions({ + draggableCursor : undefined + }); + var f = i3GEO.desenho.googlemaps.getFeaturesByAttribute( + "origem", + "medeArea"); + if (f + && f.length > 0) { + temp = window.confirm($trad("x94")); + if (temp) { i3GEO.desenho.googlemaps.destroyFeatures(f); } - }, - /** - * Mostra a totalizacao das linhas ja digitalizadas - */ - mostraTotal: function(per,area){ - var mostra = $i("mostraarea_calculo"), - texto; - if (mostra){ - texto = ""+$trad("d21at")+": "+(area/1000000).toFixed(3)+" km2"+ - "
"+$trad("d21at")+": "+(area/10000).toFixed(2)+" ha"+ - "
"+$trad("x98")+": "+(per).toFixed(2)+" km"+ - "
"+$trad("x25")+": "+i3GEO.calculo.metododistancia; - mostra.innerHTML = texto; - } - }, - /** - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse - */ - mostraParcial: function(trecho,per,area,direcao){ - var mostra = $i("mostraarea_calculo_parcial"), - texto; - if (mostra){ - texto = ""+$trad("d21at")+": "+(area/1000000).toFixed(3)+" km2"+ - "
"+$trad("d21at")+": "+(area/10000).toFixed(2)+" ha"+ - "
"+$trad("x95")+": "+trecho.toFixed(3)+" km"+ - "
"+$trad("x98")+": "+(per).toFixed(3)+" km" + - "
"+$trad("x23")+" (DMS): "+direcao; - mostra.innerHTML = texto; - } + } + f = i3GEO.desenho.googlemaps.getFeaturesByAttribute( + "origem", + "medeAreaExcluir"); + if (f + && f.length > 0) { + i3GEO.desenho.googlemaps.destroyFeatures(f); + } + }, + /** + * Mostra a totalizacao das linhas ja digitalizadas + */ + mostraTotal : function(per, area) { + var mostra = $i("mostraarea_calculo"), texto; + if (mostra) { + texto = "" + + $trad("d21at") + + ": " + + (area / 1000000).toFixed(3) + + " km2" + + "
" + + $trad("d21at") + + ": " + + (area / 10000).toFixed(2) + + " ha" + + "
" + + $trad("x98") + + ": " + + (per).toFixed(2) + + " km" + + "
" + + $trad("x25") + + ": " + + i3GEO.calculo.metododistancia; + mostra.innerHTML = texto; } }, - googleearth: { + /*************************************************************** + * Mostra o valor do trecho entre o ultimo ponto clicado e a + * posicao do mouse + */ + mostraParcial : function(trecho, per, area, direcao) { + var mostra = $i("mostraarea_calculo_parcial"), texto; + if (mostra) { + texto = "" + + $trad("d21at") + + ": " + + (area / 1000000).toFixed(3) + + " km2" + + "
" + + $trad("d21at") + + ": " + + (area / 10000).toFixed(2) + + " ha" + + "
" + + $trad("x95") + + ": " + + trecho.toFixed(3) + + " km" + + "
" + + $trad("x98") + + ": " + + (per).toFixed(3) + + " km" + + "
" + + $trad("x23") + + " (DMS): " + + direcao; + mostra.innerHTML = texto; + } } - } + }, + googleearth : {} + } }; -- libgit2 0.21.2