/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* /* Title: Metar Busca as estações meteorológicas da rede METAR na extensão geográfica do mapa atual. Veja: Arquivo: i3geo/ferramentas/metar/index.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.metar */ i3GEOF.metar = { /* 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.metar.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.metar.dicionario) === 'undefined'){ i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/metar/dicionario.js", "i3GEOF.metar.iniciaJanelaFlutuante()", "i3GEOF.metar.dicionario_script" ); } else{ i3GEOF.metar.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.metar.html(); i3GEOF.metar.ativaFoco(); if(i3GEO.Interface.ATUAL !== "googlemaps" && i3GEO.Interface.ATUAL !== "googleearth"){ i3GEO.eventos.NAVEGAMAPA.push("i3GEOF.metar.lista()"); } if(i3GEO.Interface.ATUAL === "googlemaps"){ metarDragend = google.maps.event.addListener(i3GeoMap, "dragend", function() {i3GEOF.metar.lista();}); metarZoomend = google.maps.event.addListener(i3GeoMap, "zoomend", function() {i3GEOF.metar.lista();}); } if(i3GEO.Interface.ATUAL === "googleearth"){ metarDragend = google.earth.addEventListener(i3GeoMap.getView(), "viewchangeend", function() {i3GEOF.metar.lista();}); } i3GEOF.metar.lista(); } 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 = ''; ins += '
'; return ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(){ var minimiza,cabecalho,janela,divid,temp,titulo; //funcao que sera executada ao ser clicado no cabeçalho da janela cabecalho = function(){ i3GEOF.metar.ativaFoco(); }; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.metar"); }; //cria a janela flutuante titulo = "Metar    "; janela = i3GEO.janela.cria( "250px", "190px", "", "", "", titulo, "i3GEOF.metar", false, "hd", cabecalho, minimiza ); divid = janela[2].id; i3GEOF.metar.aguarde = $i("i3GEOF.metar_imagemCabecalho").style; i3GEOF.metar.inicia(divid); temp = function(){ if(i3GEO.Interface.ATUAL !== "googlemaps" && i3GEO.Interface.ATUAL !== "googleearth"){ i3GEO.eventos.NAVEGAMAPA.remove("i3GEOF.metar.lista()"); } if(i3GEO.Interface.ATUAL === "googlemaps"){ google.maps.event.removeListener(metarDragend); google.maps.event.removeListener(metarZoomend); } if(i3GEO.Interface.ATUAL === "googleearth"){ google.earth.removeEventListener(metarDragend); } }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); }, /* Function: ativaFoco Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado */ ativaFoco: function(){ g_operacao = "navega"; var i = $i("i3GEOF.metar_c").style; i3GEO.janela.ULTIMOZINDEX++; i.zIndex = 21000 + i3GEO.janela.ULTIMOZINDEX; }, /* Function: lista Lista as estações consultando o webservice http://ws.geonames.org/weatherJSON */ lista: function(){ $i("i3GEOmetarLista").innerHTML = ""; if(i3GEOF.metar.aguarde.visibility === "visible") {return;} i3GEOF.metar.aguarde.visibility = "visible"; var montaResultado = { success:function(o){ var ins,dados,ndados,i,temp,temp1; i3GEOF.metar.aguarde.visibility = "hidden"; ins = "

"+$trad(1,i3GEOF.metar.dicionario)+"

"; try{ dados = YAHOO.lang.JSON.parse(o.responseText)[0].weatherObservations; ndados = dados.length; ins += ""; for(i=0;i" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ""; } $i("i3GEOmetarLista").innerHTML = ins+"
" + dados[i].stationName + "
long: " + dados[i].lng + ", lat: "+dados[i].lat+"
"+$trad(3,i3GEOF.metar.dicionario)+"" + dados[i].temperature + " C
"+$trad(4,i3GEOF.metar.dicionario)+"" + dados[i].weatherCondition + "
"+$trad(5,i3GEOF.metar.dicionario)+"" + dados[i].observation + "
"+$trad(6,i3GEOF.metar.dicionario)+"" + dados[i].clouds + "
"+$trad(7,i3GEOF.metar.dicionario)+"" + dados[i].windDirection + "
"+$trad(8,i3GEOF.metar.dicionario)+"" + dados[i].dewPoint + " C
"+$trad(9,i3GEOF.metar.dicionario)+"" + dados[i].windSpeed + " mph
"+$trad(10,i3GEOF.metar.dicionario)+"" + dados[i].humidity + " %
"+$trad(11,i3GEOF.metar.dicionario)+"" + dados[i].datetime + "
"+$trad(12,i3GEOF.metar.dicionario)+"" + dados[i].hectoPascAltimeter +" hpa
ICAO" + dados[i].ICAO + "
"; } catch(e){$i("i3GEOmetarLista").innerHTML = ins;} }, failure: function(o){ $i("i3GEOmetarLista").innerHTML = "Erro"; i3GEOF.metar.aguarde.visibility = "hidden"; return; }, argument: { foo:"foo", bar:"bar" } }; if(i3GEO.parametros.mapexten) {ext = i3GEO.parametros.mapexten;} else {ext = "-49.1774741355 -16.379556709 -47.2737662565 -14.9806872512";} //apenas para exemplo p = i3GEO.configura.locaplic+"/ferramentas/metar/metarextensao.php?ret="+ext; YAHOO.util.Connect.asyncRequest("GET", p, montaResultado); }, /* Function: mostraxy Indica no mapa a localização de uma estação Parametros: x {Numero} - longitude em dd y {Numero} - latitude em dd */ mostraxy: function(x,y){ if(i3GEO.Interface.ATUAL === "googleearth") {return;} i3GEO.util.criaPin("pinmetar",i3GEO.configura.locaplic+'/imagens/google/metar.png'); xy = i3GEO.calculo.dd2tela(x*1,y*1,$i(i3GEO.Interface.IDCORPO),i3GEO.parametros.mapexten,i3GEO.parametros.pixelsize); var box = $i("pinmetar"); box.style.display = "block"; box.style.width = "27px"; box.style.height = "27px"; box.style.top = parseInt(xy[1],10)-27+"px"; box.style.left = parseInt(xy[0],10)-13+"px"; box.style.position = "absolute"; box.style.border = "solid 0px red"; box.style.zIndex = 5000; } };