/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Insere ponto Inclui pontos no mapa no local clicado pelo usuário Veja: Arquivo: i3geo/ferramentas/inserexy2/index.js.php Licenca: 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 ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if(typeof(i3GEOF) === 'undefined'){ var i3GEOF = {}; } /* Classe: i3GEOF.inserexy */ i3GEOF.inserexy = { /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", /* Para efeitos de compatibilidade antes da versão 4.7 que não tinha dicionário */ criaJanelaFlutuante: function(){ i3GEOF.inserexy.iniciaDicionario(); }, /* Function: iniciaDicionario Carrega o dicionário e chama a função que inicia a ferramenta O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script */ iniciaDicionario: function(){ if(typeof(i3GEOF.inserexy.dicionario) === 'undefined'){ i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/inserexy2/dicionario.js", "i3GEOF.inserexy.iniciaJanelaFlutuante()", "i3GEOF.inserexy.dicionario_script" ); } else{ i3GEOF.inserexy.iniciaJanelaFlutuante(); } }, /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ try{ $i(iddiv).innerHTML += i3GEOF.inserexy.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia0","i3GEOinserexyguia"); //eventos das guias $i("i3GEOinserexyguia0").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia0","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "none"; }; $i("i3GEOinserexyguia1").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia1","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "none"; }; $i("i3GEOinserexyguia2").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia2","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "none"; }; $i("i3GEOinserexyguia3").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia3","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "block"; }; $i("i3GEOinserexyguia4").onclick = function() {i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia4","i3GEOinserexyguia");}; $i("i3GEOinserexyguia5").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia5","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "none"; }; $i("i3GEOinserexyguia6").onclick = function(){ i3GEO.guias.mostraGuiaFerramenta("i3GEOinserexyguia6","i3GEOinserexyguia"); $i("i3GEOinserexyprojecao").style.display = "none"; }; i3GEO.util.mensagemAjuda("i3GEOinserexymen1",$i("i3GEOinserexymen1").innerHTML); i3GEO.util.mensagemAjuda("i3GEOinserexymendd",$i("i3GEOinserexymendd").innerHTML); i3GEO.util.mensagemAjuda("i3GEOinserexymen2",$i("i3GEOinserexymen2").innerHTML); i3GEO.util.mensagemAjuda("i3GEOinserexymen3",$i("i3GEOinserexymen3").innerHTML); new YAHOO.widget.Button( "i3GEOinserexybotaodd", {onclick:{fn: i3GEOF.inserexy.inserirdd}} ); new YAHOO.widget.Button( "i3GEOinserexybotaocriatema", {onclick:{fn: i3GEOF.inserexy.criatemaeditavel}} ); new YAHOO.widget.Button( "i3GEOinserexybotaoperfil", {onclick:{fn: i3GEOF.inserexy.graficoPerfil}} ); new YAHOO.widget.Button( "i3GEOinserexybotao2", {onclick:{fn: i3GEOF.inserexy.inserir}} ); new YAHOO.widget.Button( "i3GEOinserexybotao6", {onclick:{fn: i3GEOF.inserexy.colar}} ); new YAHOO.widget.Button( "i3GEOinserexybotao3", {onclick:{fn: i3GEOF.inserexy.wkt}} ); new YAHOO.widget.Button( "i3GEOinserexybotao4", {onclick:{fn: i3GEOF.inserexy.criaPol}} ); new YAHOO.widget.Button( "i3GEOinserexybotao5", {onclick:{fn: i3GEOF.inserexy.criaLin}} ); i3GEOF.inserexy.ativaFoco(); i3GEOF.inserexy.montaComboLocal(); i3GEO.util.radioEpsg( function(retorno){ $i("i3GEOinserexylistaepsg").innerHTML = retorno.dados; }, "i3GEOinserexylistaepsg", "i3GEOinserexy" ); } catch(erro){i3GEO.janela.tempoMsg(erro);} }, /* Function: html Gera o código html para apresentação das opções da ferramenta Retorno: String com o código html */ html:function(){ var ins = '' + '
' + ' ' + '

' + '' + '' + '' + ' '+ '' + '' + '' + ''; return ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(){ var minimiza,cabecalho,janela,divid,temp,titulo; //cria a janela flutuante cabecalho = function(){ i3GEOF.inserexy.ativaFoco(); }; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.inserexy"); }; titulo = $trad("d22t")+"    "; janela = i3GEO.janela.cria( "500px", "300px", "", "", "", titulo, "i3GEOF.inserexy", false, "hd", cabecalho, minimiza ); divid = janela[2].id; i3GEOF.inserexy.aguarde = $i("i3GEOF.inserexy_imagemCabecalho").style; $i("i3GEOF.inserexy_corpo").style.backgroundColor = "white"; i3GEOF.inserexy.inicia(divid); if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEOF.inserexy.adicionaClique()") < 0) {i3GEO.eventos.MOUSECLIQUE.push("i3GEOF.inserexy.adicionaClique()");} i3GEO.eventos.cliquePerm.desativa(); temp = function(){ i3GEO.eventos.cliquePerm.ativa(); i3GEO.barraDeBotoes.ativaPadrao(); i3GEO.eventos.MOUSECLIQUE.remove("i3GEOF.inserexy.adicionaClique()"); }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); }, /* Function: ativaFoco Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado */ ativaFoco: function(){ i3GEO.eventos.cliquePerm.desativa(); i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); i3GEO.barraDeBotoes.ativaIcone("inserexy"); g_tipoacao='inserexy'; g_operacao=''; var i = $i("i3GEOF.inserexy_c").style; i3GEO.janela.ULTIMOZINDEX++; i.zIndex = 21000 + i3GEO.janela.ULTIMOZINDEX; }, /* Function: montaComboLocal Monta o combo com a lista de temas que podem ser editados (temas armazenados no diretório temporário do i3Geo) Veja: */ montaComboLocal: function(){ i3GEO.util.comboTemas( "i3GEOinserexytemasLocais", function(retorno){ $i("i3GEOinserexyshapefile").innerHTML = retorno.dados; if ($i("i3GEOinserexytemasLocais")){ $i("i3GEOinserexytemasLocais").onchange = function(){ i3GEO.mapa.ativaTema($i("i3GEOinserexytemasLocais").value); i3GEOF.inserexy.listaItens(); i3GEOF.inserexy.listaPontos(); }; } if(i3GEO.temaAtivo !== ""){ var temp = $i("i3GEOinserexytemasLocais"); if(temp){ temp.value = i3GEO.temaAtivo; temp.onchange.call(); } } }, "i3GEOinserexyshapefile", "", false, "locais" ); }, /* Function: criatemaeditavel Cria um novo tema local para receber os pontos Veja: */ criatemaeditavel: function(){ if(i3GEOF.inserexy.aguarde.visibility === "visible") {return;} var funcaoOK = function(){ try{ var tituloTema,cp,p; tituloTema = $i("i3GEOjanelaprompt").value; if(tituloTema === "") {tituloTema = "Pontos inseridos "+Math.random();} i3GEOF.inserexy.aguarde.visibility = "visible"; temp = function(retorno){ i3GEOF.inserexy.aguarde.visibility = "hidden"; i3GEO.temaAtivo = retorno.data; i3GEO.atualiza(); i3GEOF.inserexy.montaComboLocal(); }; cp = new cpaint(); cp.set_response_type("JSON"); p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=criashpvazio&tituloTema="+tituloTema; cp.call(p,"criaSHPvazio",temp); } catch(e){ i3GEO.janela.tempoMsg("Erro: "+e); i3GEOF.inserexy.aguarde.visibility = "hidden"; } }; i3GEO.janela.prompt($trad(31,i3GEOF.inserexy.dicionario),funcaoOK,$trad(32,i3GEOF.inserexy.dicionario)+parseInt((Math.random() * 100),10)); }, /* Function: listaPontos Lista os pontos existentes no tema escolhido Veja: */ listaPontos: function(){ var cp,p,temp; temp = function(retorno){ if (retorno.data != undefined){ var ins = [],i; for (i=0;i"+retorno.data[i].x+" "+retorno.data[i].y+"
");} $i("i3GEOinserexyguia6obj").innerHTML = ins.join(""); } else {$i("i3GEOinserexyguia6obj").innerHTML = "

Erro
";} }; cp = new cpaint(); cp.set_response_type("JSON"); p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=listaPontosShape&tema="+$i("i3GEOinserexytemasLocais").value; cp.call(p,"listaPontosShape",temp); }, /* Function: listaItens Lista os itens do tema escolhido para receber os pontos Veja: */ listaItens: function(){ i3GEO.util.comboItens( "i3GEOinserexyItem", $i("i3GEOinserexytemasLocais").value, function(retorno){ $i("i3GEOinserexyshapefileitem").innerHTML = "

"+retorno.dados+"

"; $i("i3GEOinserexyopcitens").style.display = "block"; }, "i3GEOinserexyshapefileitem" ); }, /* Function: adicionaClique Adiciona um ponto no mapa no local onde o usuário clicar com o mouse As coordenadas são obtidas do objeto objposicaocursor */ adicionaClique: function(){ i3GEOF.inserexy.adiciona(objposicaocursor.ddx+" "+objposicaocursor.ddy,"cliqueMapa"); }, /* Function: inserirdd Insere um ponto com base na direção e distância */ inserirdd: function(){ try{ var regv,xgv,xmv,xsv,direcao,divs,x,y,xy; regv = new RegExp(",", "g"); xgv = $i("i3GEOinserexyxgdd").value; xmv = $i("i3GEOinserexyxmdd").value; xsv = $i("i3GEOinserexyxsdd").value; xsv = xsv.replace(regv,"."); direcao = i3GEO.calculo.dms2dd(xgv,xmv,xsv); //pega o último ponto divs = $i("i3GEOinserexyguia6obj").getElementsByTagName("div"); divs = divs[divs.length - 1]; divs = divs.innerHTML.split(" "); x = divs[0]; y = divs[1]; xy = i3GEO.calculo.destinoDD(x,y,$i("i3GEOinserexydistdd").value,direcao); i3GEOF.inserexy.adiciona(xy[0]+" "+xy[1]); }catch(e){i3GEO.janela.tempoMsg("Erro: "+e);} }, /* Function: inserir Insere pontos digitando-se as coordenadas */ inserir: function(){ try{ var reg = new RegExp("w|W|l|L|o|O|'|G|r", "g"), regv = new RegExp(",", "g"), v,xgv = 0,xmv = 0,xsv = 0,vv,ygv = 0,ymv = 0,ysv = 0,x,y; if($i("i3GEOinserexytipodigcampo").checked){ if (!$i("i3GEOinserexylongitude").value == ""){ v = $i("i3GEOinserexylongitude").value + " 0" + " 0"; v = v.replace(reg,""); v = v.replace(regv,"."); v = v.split(" "); xgv = v[0]; xmv = v[1]; xsv = v[2]; xsv = xsv.replace(",","."); } if (!$i("i3GEOinserexylatitude").value == ""){ vv = $i("i3GEOinserexylatitude").value + " 0" + " 0"; vv = vv.replace(reg,""); vv = vv.replace(regv,"."); vv = vv.split(" "); ygv = vv[0]; ymv = vv[1]; ysv = vv[2]; ysv = ysv.replace(regv,"."); } } if($i("i3GEOinserexytipodigmascara").checked){ xgv = $i("i3GEOinserexyxg").value; xmv = $i("i3GEOinserexyxm").value; xsv = $i("i3GEOinserexyxs").value; xsv = xsv.replace(regv,"."); ygv = $i("i3GEOinserexyyg").value; ymv = $i("i3GEOinserexyym").value; ysv = $i("i3GEOinserexyys").value; ysv = ysv.replace(regv,"."); } x = i3GEO.calculo.dms2dd(xgv,xmv,xsv); y = i3GEO.calculo.dms2dd(ygv,ymv,ysv); g_tipoacao = "inserexy"; i3GEOF.inserexy.adiciona(x+" "+y); } catch(e){i3GEO.janela.tempoMsg("Erro: "+e);} }, /* Functin: colar Captura as coordenadas coladas pelo usuário e insere os pontos */ colar: function(){ var regv = new RegExp(",", "g"), valores = $i("i3GEOinserexycolar").value; valores = valores.replace(regv,"."); i3GEOF.inserexy.adiciona(valores); }, /* Function: escolhedig Define o tipo de entrada de coordenadas (dms ou dd) */ escolhedig: function(q){ $i("i3GEOinserexydigmascara").style.display="none"; $i("i3GEOinserexydigcampo").style.display="none"; $i(q).style.display="block"; }, /* Function: pegaProjecao Obtém o código da projeção escolhida */ pegaProjecao: function(){ var inputs = $i("i3GEOinserexylistaepsg").getElementsByTagName("input"), i, projecao = ""; for (i=0;i */ adiciona: function(xy,fonte){ if(i3GEOF.inserexy.aguarde.visibility === "visible") {return;} if(g_tipoacao === "inserexy"){ i3GEOF.inserexy.aguarde.visibility = "visible"; var tema = $i("i3GEOinserexytemasLocais").value, item = "", valoritem = "", temp, n, i, xyn, projecao = i3GEOF.inserexy.pegaProjecao(); xyn = xy.split(" "); n = xyn.length; temp = ""; for(i=0;i
"; } $i("i3GEOinserexyguia6obj").innerHTML += temp; if($i("i3GEOinserexyItem") && $i("i3GEOinserexyvalorItem")){ item = $i("i3GEOinserexyItem").value; valoritem = $i("i3GEOinserexyvalorItem").value; } if (tema === "") {i3GEO.janela.tempoMsg($trad(33,i3GEOF.inserexy.dicionario));} else{ temp = function(retorno){ if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza();} i3GEO.Interface.atualizaTema(retorno,tema); i3GEOF.inserexy.aguarde.visibility = "hidden"; }; if(fonte !== undefined){ projecao = ""; } i3GEO.php.insereSHP(temp,tema,item,valoritem,xy,projecao); } } }, /* Function: criaLin Converte os pontos de um tema em linhas Veja: */ criaLin: function(){ if(i3GEOF.inserexy.aguarde.visibility === "visible") {return;} i3GEOF.inserexy.aguarde.visibility = "visible"; var cp = new cpaint(), p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=sphPT2shp¶=linha&tema="+$i("i3GEOinserexytemasLocais").value+"&ext="+i3GEO.parametros.mapexten, temp = function(){ i3GEOF.inserexy.aguarde.visibility = "hidden"; i3GEO.atualiza(); }; cp.set_response_type("JSON"); cp.call(p,"sphPT2shp",temp); }, /* Function: criaPol Converte os pontos de um tema em poligonos Veja: */ criaPol: function(){ if(i3GEOF.inserexy.aguarde.visibility === "visible") {return;} i3GEOF.inserexy.aguarde.visibility = "visible"; var cp = new cpaint(), p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=sphPT2shp¶=poligono&tema="+$i("i3GEOinserexytemasLocais").value+"&ext="+i3GEO.parametros.mapexten, temp = function(){ i3GEOF.inserexy.aguarde.visibility = "hidden"; i3GEO.atualiza(); }; cp.set_response_type("JSON"); cp.call(p,"sphPT2shp",temp); }, /* Function: wkt Converte os pontos em WKT Veja: */ wkt: function(){ if(i3GEOF.inserexy.aguarde.visibility === "visible") {return;} i3GEOF.inserexy.aguarde.visibility = "visible"; try{ var divs = $i("i3GEOinserexyguia6obj").getElementsByTagName("div"), n = divs.length, xy = [], cp = new cpaint(), i, mostra = function(retorno){ i3GEOF.inserexy.aguarde.visibility = "hidden"; if (retorno.data !== undefined){ var ins = "
"; ins += "
"; ins += "
"; $i("i3GEOinserexywktres").innerHTML = "

"+ins+"

"; } else {$i("i3GEOinserexywktres").innerHTML = "

Erro
";} }; for (i=0;i