Commit ec18d2cdc3dea8f0d1d92d1a6b5a1a4ae00aa5b3

Authored by Edmar Moretti
1 parent 844ba2b6

Inclusão da biblioteca Proj4 e incorporação na ferramenta de apresentação de coordenadas

classesjs/classe_coordenadas.js
... ... @@ -37,7 +37,125 @@ Inclui elementos especiais no mapa para apresentação de coordenadas
37 37 */
38 38 i3GEO.coordenadas = {
39 39 /*
40   - Propriedade: PARAMETROS
  40 + Propriedade: formato
  41 +
  42 + Formato de apresentação das coordenadas
  43 +
  44 + Type:
  45 + {string}
  46 +
  47 + Default:
  48 + "lista"
  49 +
  50 + Valores:
  51 +
  52 + bloco - mostra apenas um dos tipos e uma caixa de seleção
  53 +
  54 + separado - mostra todos os tipos em lugares diferentes conforme o valor de idhtml
  55 +
  56 + lista - mostra cada tipo em um lugar diferente conforme o valor de idhtml
  57 + */
  58 + formato: "bloco", //bloco,separado,lista,janela
  59 + /*
  60 + Propriedade: padrao
  61 +
  62 + Indica qual tipo de coordenada é mostrado como padrão. Deve existir em i3GEO.coordenadas.config
  63 +
  64 + Default:
  65 + "geoProj"
  66 + */
  67 + padrao: "geoProj", //so faz sentido se formato for bloco
  68 + /*
  69 + Propriedade: defOrigem
  70 +
  71 + CRS que define a projeção original das coordenadas capturadas na tela. Deve ser o mesmo
  72 + parâmetro definido no mapfile de inicialização do mapa (veja em i3geo/aplicmap/geral1.map ou geral1windows.map)
  73 +
  74 + Default:
  75 + "+proj=longlat +ellps=GRS67 +no_defs"
  76 + */
  77 + defOrigem: "+proj=longlat +ellps=GRS67 +no_defs", //sad69 geo
  78 + /*
  79 + Propriedade: config
  80 +
  81 + Define as configurações de cada tipo de coordenada mostrada
  82 +
  83 + Para alterar os parâmetros ou acrescentar novas projeções, altere esse objeto por meio de javascript
  84 +
  85 + Para mais detalhes, veja i3geo/classesjs/classe_coordenada.js
  86 +
  87 + Para desativar a apresentação de uma projeção altere o valor de "ativo".
  88 + */
  89 + config: {
  90 + "geoProj":{
  91 + idhtml: "localizarxy",
  92 + tipo: "geo",
  93 + titulo: "Geo",
  94 + ativo: true,
  95 + defepsg: ""
  96 + },
  97 + "policonicaSad69":{
  98 + idhtml: "localizarxy",
  99 + tipo: "metrica",
  100 + titulo: "Policônica SAD-69",
  101 + ativo: true,
  102 + defepsg: "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs"
  103 + },
  104 + "utmSad69Proj":{
  105 + idhtml: "localizarxy",
  106 + tipo: "utm",
  107 + titulo: "UTM Sad-69",
  108 + ativo: true,
  109 + defepsg: "",
  110 + zona:{
  111 + "19N":"+proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs",
  112 + "20N":"+proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs",
  113 + "21N":"+proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs",
  114 + "22N":"+proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs",
  115 + "17S":"+proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs",
  116 + "18S":"+proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs",
  117 + "19S":"+proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs",
  118 + "20S":"+proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs",
  119 + "21S":"+proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs",
  120 + "22S":"+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs",
  121 + "23S":"+proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs",
  122 + "24S":"+proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs",
  123 + "25S":"+proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs"
  124 + }
  125 + },
  126 + "utmSirgas2000Proj":{
  127 + idhtml: "localizarxy",
  128 + tipo: "utm",
  129 + titulo: "UTM Sirgas 2000",
  130 + ativo: true,
  131 + defepsg: "",
  132 + zona:{
  133 + "11N":"+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  134 + "12N":"+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  135 + "13N":"+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  136 + "14N":"+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  137 + "15N":"+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  138 + "16N":"+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  139 + "17N":"+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  140 + "18N":"+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  141 + "19N":"+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  142 + "20N":"+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  143 + "21N":"+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  144 + "22N":"+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  145 + "17S":"+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  146 + "18S":"+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  147 + "19S":"+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  148 + "20S":"+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  149 + "21S":"+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  150 + "22S":"+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  151 + "23S":"+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  152 + "24S":"+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs",
  153 + "25S":"+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"
  154 + }
  155 + }
  156 + },
  157 + /*
  158 + Propriedade: PARAMETROS (depreciado)
41 159  
42 160 Parametros de inicialização dos componentes.
43 161  
... ... @@ -45,11 +163,9 @@ i3GEO.coordenadas = {
45 163  
46 164 Você pode acessar os parâmetros da seguinte forma:
47 165  
48   - i3GEO.coordenadas.PARAMETROS.mostraCoordenadasUTM.idhtml = "";
49   -
50   - Para evitar o funcionamento de um componente, experimente utilizar o seguinte exemplo:
  166 + i3GEO.coordenadas.PARAMETROS.mostraCoordenadas.idhtml = "";
51 167  
52   - i3GEO.coordenadas.PARAMETROS.mostraCoordenadasUTM.idhtml = "";
  168 + Nas versões anteriores à 4.5 do i3Geo utilizava-se um
53 169  
54 170 Default:
55 171  
... ... @@ -71,17 +187,16 @@ i3GEO.coordenadas = {
71 187 "mostraCoordenadasUTM":
72 188 {idhtml:"localizarxy"},
73 189 "mostraCoordenadasGEO":
74   - {idhtml:"localizarxy"}
  190 + {idhtml:"localizarxy"}
75 191 },
76 192 /*
77 193 Function: mostraCoordenadasUTM
78 194  
79   - Obtém as coordenadas UTM da posição do mouse sobre o mapa.
  195 + Obtém e mostra as coordenadas UTM da posição do mouse sobre o mapa por meio de um cálculo realizado no servidor.
80 196  
81   - As coordenadas são obtidas por meio de uma chamada AJAX.
  197 + Essa função deixou de ser utilizada na versão 4.5 do i3Geo.
82 198  
83   - Para o funcionamento correto é necessário incluir essa função no evento que identifica quando o mouse
84   - está estacionado sobre o mapa. Por default isso já é feito pelo i3Geo.
  199 + As coordenadas são obtidas por meio de uma chamada AJAX.
85 200  
86 201 Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o
87 202 id definido em i3GEO.coordenadas.PARAMETROS (mostraCoordenadasUTM) ou altere a variável i3GEO.eventos.MOUSEPARADO
... ... @@ -154,10 +269,10 @@ i3GEO.coordenadas = {
154 269 /*
155 270 Function: mostraCoordenadasGEO
156 271  
157   - Obtém as coordenadas Geográficas da posição do mouse sobre o mapa.
  272 + Obtém e mostra as coordenadas Geográficas da posição do mouse sobre o mapa.
158 273  
159   - Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o
160   - id definido em i3GEO.coordenadas.PARAMETROS (localizarxy)
  274 + Se você não quer essa função no mapa, elimine o elemento HTML que contenha o
  275 + id definido em i3GEO.coordenadas.PARAMETROS, por default é "localizarxy"
161 276  
162 277 Parametro:
163 278  
... ... @@ -167,50 +282,314 @@ i3GEO.coordenadas = {
167 282 mostraCoordenadasGEO: function(id){
168 283 if(typeof(console) !== 'undefined'){console.info("i3GEO.coordenadas.mostraCoordenadasGEO()");}
169 284 try{
170   - //
171   - //ativa o evento que preenche os campos de coordenadas
172   - //
173 285 var ins,temp;
174 286 if(arguments.length === 0 || id === "" || id == undefined)
175 287 {id = i3GEO.coordenadas.PARAMETROS.mostraCoordenadasGEO.idhtml;}
176 288 else
177 289 {i3GEO.coordenadas.PARAMETROS.mostraCoordenadasGEO.idhtml = id;}
178 290 if($i(id)){
179   - if(!$i("xm")){
180   - ins = "<table style='text-align:center'><tr>" +
181   - "<td>X:&nbsp;</td>" +
182   - "<td>"+$inputText(id,"315","xg","grau","3","-00")+"&nbsp;</td>" +
183   - "<td>"+$inputText("","","xm","minuto","3","00")+"&nbsp;</td>" +
184   - "<td>"+$inputText("","","xs","segundo","5","00.00")+"&nbsp;</td>" +
185   - "<td>Y:"+$inputText("","","yg","grau","3","-00")+"&nbsp;</td>" +
186   - "<td>"+$inputText("","","ym","minuto","3","00")+"&nbsp;</td>" +
187   - "<td>"+$inputText("","","ys","segundo","5","00.00")+"</td>";
188   - temp = 'var xxx = i3GEO.calculo.dms2dd($i("xg").value,$i("xm").value,$i("xs").value);' +
189   - 'var yyy = i3GEO.calculo.dms2dd($i("yg").value,$i("ym").value,$i("ys").value);' +
190   - 'i3GEO.navega.zoomponto(i3GEO.configura.locaplic,i3GEO.configura.sid,xxx,yyy);';
191   - ins += "<td><img class='tic' title='zoom' onclick='"+temp+"' src='"+i3GEO.util.$im("branco.gif")+"' id=procurarxy /></td>" +
192   - "</tr></table>";
193   - $i(id).innerHTML = ins;
194   - atualizaLocalizarxy = function(){
195   - try{
196   - var x = objposicaocursor.dmsx.split(" ");
197   - var y = objposicaocursor.dmsy.split(" ");
198   - $i("xg").value = x[0];
199   - $i("xm").value = x[1];
200   - $i("xs").value = x[2];
201   - $i("yg").value = y[0];
202   - $i("ym").value = y[1];
203   - $i("ys").value = y[2];
204   - }
205   - catch(m){
206   - if(typeof(console) !== 'undefined'){console.error(m);}
207   - }
  291 + if(!$i("coordgeotabela")){
  292 + $i(id).innerHTML = i3GEO.coordenadas.criaMascaraDMS("coordgeotabela");
  293 + atualizaLocalizarGeo = function(){
  294 + var temp = $i("coordgeotabela");
  295 + if(temp && temp.style.display === "block")
  296 + {i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,"coordgeotabela");}
208 297 };
209   - if(i3GEO.eventos.MOUSEMOVE.toString().search("atualizaLocalizarxy()") < 0)
210   - {i3GEO.eventos.MOUSEMOVE.push("atualizaLocalizarxy()");}
  298 + if(i3GEO.eventos.MOUSEMOVE.toString().search("atualizaLocalizarGeo()") < 0)
  299 + {i3GEO.eventos.MOUSEMOVE.push("atualizaLocalizarGeo()");}
211 300 }
212 301 }
213 302 }
214 303 catch(e){alert("mostraCoordenadasGeo: "+e.description);}
  304 + },
  305 + /*
  306 + Function: geo2zonaUtm
  307 +
  308 + Determina qual é a zona UTM de um par de coordenadas geográficas
  309 +
  310 + Parametros:
  311 +
  312 + long - longitude em décimos de grau
  313 +
  314 + Return:
  315 +
  316 + {number} - zona UTM
  317 + */
  318 + geo2zonaUtm: function(long){
  319 + long = (long * 1) + 180;
  320 + long = long / 6;
  321 + return parseInt(long,10) + 1;
  322 + },
  323 + /*
  324 + Function: criaMascaraDMS
  325 +
  326 + Cria uma tabela para mostrar as coordenadas no padrão grau minuto e segundo
  327 +
  328 + A tabela criada receberá o id = prefixo
  329 +
  330 + Parametro:
  331 +
  332 + prefixo {string} - prefixo para batizar os ids dos elementos que serão criados
  333 +
  334 + Retorno:
  335 +
  336 + {string} - html com a tabela
  337 + */
  338 + criaMascaraDMS: function(prefixo,titulo,caixa){
  339 + var ins = "<table id="+prefixo+" style=display:block;text-align:center ><tr style='border-bottom:2px solid white' >" +
  340 + "<td style=width:150px;text-align:right >"+titulo+" X:&nbsp;</td>" +
  341 + "<td>"+$inputText("","315",prefixo+"xg","grau","3","-00")+"&nbsp;</td>" +
  342 + "<td>"+$inputText("","",prefixo+"xm","minuto","3","00")+"&nbsp;</td>" +
  343 + "<td>"+$inputText("","",prefixo+"xs","segundo","5","00.00")+"&nbsp;</td>" +
  344 + "<td>Y:"+$inputText("","",prefixo+"yg","grau","3","-00")+"&nbsp;</td>" +
  345 + "<td>"+$inputText("","",prefixo+"ym","minuto","3","00")+"&nbsp;</td>" +
  346 + "<td>"+$inputText("","",prefixo+"ys","segundo","5","00.00")+"</td>";
  347 + temp = 'var '+prefixo+'xxx = i3GEO.calculo.dms2dd($i("'+prefixo+'xg").value,$i("'+prefixo+'xm").value,$i("'+prefixo+'xs").value);' +
  348 + 'var '+prefixo+'yyy = i3GEO.calculo.dms2dd($i("'+prefixo+'yg").value,$i("'+prefixo+'ym").value,$i("'+prefixo+'ys").value);' +
  349 + 'i3GEO.navega.zoomponto(i3GEO.configura.locaplic,i3GEO.configura.sid,'+prefixo+'xxx,'+prefixo+'yyy);';
  350 + ins += '<td><img class=tic title=zoom onclick="'+temp+'" src="'+i3GEO.util.$im("branco.gif")+'" /></td>' +
  351 + "<td>"+caixa+"<td>" +
  352 + "</tr></table>";
  353 + return ins;
  354 + },
  355 + /*
  356 + Function: atualizaGeo
  357 +
  358 + Atualiza os valores em uma tabela do tipo DMS
  359 +
  360 + Parametros:
  361 +
  362 + dmsx {string} - valors de longitude em "d m s"
  363 +
  364 + dmsy {string} - valors de latitude em "d m s"
  365 +
  366 + prefixo {string} - prefixo da tabela (veja criaMascaraDMS)
  367 +
  368 + */
  369 + atualizaGeo: function(dmsx,dmsy,prefixo){
  370 + var x = dmsx.split(" "),
  371 + y = dmsy.split(" ");
  372 + $i(prefixo+"xg").value = x[0];
  373 + $i(prefixo+"xm").value = x[1];
  374 + $i(prefixo+"xs").value = x[2];
  375 + $i(prefixo+"yg").value = y[0];
  376 + $i(prefixo+"ym").value = y[1];
  377 + $i(prefixo+"ys").value = y[2];
  378 + },
  379 + /*
  380 + Function: criaMascaraMetrica
  381 +
  382 + Cria uma tabela para mostrar as coordenadas no padrão métrico (x e y)
  383 +
  384 + A tabela criada receberá o id prefixo+"tabela"
  385 +
  386 + Parametro:
  387 +
  388 + prefixo {string} - prefixo para batizar os ids dos elementos que serão criados
  389 +
  390 + cixa {string} - (opcional) caixa de seleção de tipos
  391 +
  392 + Retorno:
  393 +
  394 + {string} - html com a tabela
  395 + */
  396 + criaMascaraMetrica: function(prefixo,titulo,caixa){
  397 + var ins = "<table id="+prefixo+" style=display:block;text-align:center ><tr style='border-bottom:2px solid white' >" +
  398 + "<td style=width:150px;text-align:right >"+titulo+" X:&nbsp;</td>" +
  399 + "<td>"+$inputText("","",prefixo+"X","X","12","00")+"&nbsp;</td>" +
  400 + "<td>Y:"+$inputText("","",prefixo+"Y","Y","12","00")+"&nbsp;</td>" +
  401 + "<td>Zn:"+$inputText("","",prefixo+"ZN","Zona","2","--")+"&nbsp;</td>" +
  402 + "<td>"+caixa+"<td>" +
  403 + "</tr></table>";
  404 + return ins;
  405 + },
  406 + /*
  407 + Function: atualizaProj4
  408 +
  409 + Atualiza os valores em uma tabela do tipo x e y com base na biblioteca Proj4
  410 +
  411 + http://trac.osgeo.org/proj4js/wiki/UserGuide
  412 +
  413 + Parametros:
  414 +
  415 + configProj {string}
  416 +
  417 + */
  418 + atualizaProj4: function(configProj){
  419 + eval("temp = i3GEO.coordenadas.config."+configProj+";");
  420 + try{
  421 + if($i(configProj).style.display == "none")
  422 + {return;}
  423 + }
  424 + catch(e){}
  425 + if(temp.tipo === "metrica"){
  426 + var destino = temp.defepsg;
  427 + }
  428 + if(temp.tipo === "utm"){
  429 + var zona = i3GEO.coordenadas.geo2zonaUtm(objposicaocursor.ddx);
  430 + $i(configProj+"ZN").value = zona
  431 + if(objposicaocursor.ddy*1 > 0)
  432 + {var destino = temp.zona[zona+"N"];}
  433 + else
  434 + {var destino = temp.zona[zona+"S"];}
  435 + if(destino == undefined){
  436 + i3GEO.util.defineValor(configProj+"X","value","?");
  437 + i3GEO.util.defineValor(configProj+"Y","value","?");
  438 + return;
  439 + }
  440 + }
  441 + Proj4js.defs = {
  442 + 'ORIGEM' : i3GEO.coordenadas.defOrigem,
  443 + 'DESTINO': destino
  444 + };
  445 + var source = new Proj4js.Proj("ORIGEM"),
  446 + dest = new Proj4js.Proj("DESTINO"),
  447 + p = new Proj4js.Point(objposicaocursor.ddx,objposicaocursor.ddy);
  448 + Proj4js.transform(source, dest, p);
  449 + i3GEO.util.defineValor(configProj+"X","value",p.x);
  450 + i3GEO.util.defineValor(configProj+"Y","value",p.y);
  451 + },
  452 + /*
  453 + Function: ativaBloco
  454 +
  455 + Mostra um tipo de coordenada e esconde os outros.
  456 +
  457 + Mostra o que estiver definido em i3GEO.coordenadas.padrao
  458 + */
  459 + ativaBloco: function(){
  460 + var tipos = i3GEO.util.listaChaves(i3GEO.coordenadas.config),
  461 + n = tipos.length,
  462 + temp,
  463 + i = 0;
  464 + //
  465 + //cria o HTML e a caixa de seleção
  466 + //
  467 + for(i=0;i<n;i++){
  468 + eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
  469 + if(temp.ativo === true){
  470 + if(tipos[i] == i3GEO.coordenadas.padrao)
  471 + {$i(tipos[i]).style.display = "block";}
  472 + else
  473 + {$i(tipos[i]).style.display = "none";}
  474 + }
  475 + }
  476 + },
  477 + /*
  478 + Function: mudaTipo
  479 +
  480 + Muda o tipo de coordenada que está sendo mostrada no formato "bloco".
  481 +
  482 + Parametro:
  483 +
  484 + tipo {string} - tipo de coordenada
  485 + */
  486 + mudaTipo: function(obj){
  487 + if(obj.value === "janela"){
  488 + i3GEO.coordenadas.formato = "janela";
  489 + i3GEO.coordenadas.mostraCoordenadas();
  490 + return;
  491 + }
  492 + i3GEO.coordenadas.padrao = obj.value;
  493 + obj.selectedIndex = 0;
  494 + i3GEO.coordenadas.ativaBloco();
  495 + },
  496 + /*
  497 + Function: mostraCoordenadas
  498 +
  499 + Constrói o conjunto de elementos HTML para mostrar as coordenadas e define as funções de atualização.
  500 + */
  501 + mostraCoordenadas: function(){
  502 + try{
  503 + var tipos = i3GEO.util.listaChaves(i3GEO.coordenadas.config),
  504 + n = tipos.length,
  505 + temp,
  506 + ins = "",
  507 + onde = "",
  508 + i = 0,
  509 + caixa = "<select onchange='javascript:i3GEO.coordenadas.mudaTipo(this);' style='font-size:10px;height:15px;width:50px;' ><option>---</option><option value='janela' >janela</option>";
  510 + //
  511 + //cria a caixa de seleção
  512 + //
  513 + for(i=0;i<n;i++){
  514 + eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
  515 + if(temp.ativo === true){
  516 + caixa += "<option value='"+tipos[i]+"'>"+temp.titulo+"</option>";
  517 + }
  518 + }
  519 + caixa += "</select>";
  520 + if(i3GEO.coordenadas.formato !== "bloco")
  521 + {caixa = "";}
  522 + //
  523 + //cria o HTML
  524 + //
  525 + for(i=0;i<n;i++){
  526 + eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
  527 + if(temp.ativo === true){
  528 + if(temp.tipo === "geo"){
  529 + ins += i3GEO.coordenadas.criaMascaraDMS(tipos[i],temp.titulo,caixa);
  530 + if(i3GEO.coordenadas.formato === "separado"){
  531 + try{$i(temp.idhtml).innerHTML = ins;}
  532 + catch(e){}
  533 + ins = "";
  534 + }
  535 + else
  536 + {onde = temp.idhtml;}
  537 + }
  538 + else{
  539 + ins += i3GEO.coordenadas.criaMascaraMetrica(tipos[i],temp.titulo,caixa);
  540 + }
  541 + }
  542 + }
  543 + if(i3GEO.coordenadas.formato === "janela"){
  544 + var janela = i3GEO.janela.cria(
  545 + "450px",
  546 + "90px",
  547 + "",
  548 + "",
  549 + "",
  550 + "Coordenadas aproximadas",
  551 + "i3GEOJanelaCoordenadas",
  552 + false,
  553 + "hd",
  554 + "",
  555 + ""
  556 + );
  557 + temp = $i("i3GEOJanelaCoordenadas_corpo");
  558 + temp.style.backgroundColor = "white";
  559 + temp.style.textAlign = "left";
  560 + temp = $i("i3GEOJanelaCoordenadas");
  561 + temp.onmouseover = "";
  562 + temp.onmouseout = "";
  563 + if($i(onde))
  564 + {$i(onde).innerHTML = "";}
  565 + onde = "i3GEOJanelaCoordenadas_corpo";
  566 + }
  567 + if($i(onde))
  568 + {$i(onde).innerHTML = ins;}
  569 + //
  570 + //aplica as funções de movimentação do mouse
  571 + //
  572 + for(i=0;i<n;i++){
  573 + eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
  574 + if(temp.ativo === true){
  575 + if(temp.tipo === "geo"){
  576 + atualizaLocalizarGeo = function(id){
  577 + temp = $i(id);
  578 + if(temp && temp.style.display == "block")
  579 + {i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,id);}
  580 + };
  581 + if(i3GEO.eventos.MOUSEMOVE.toString().search("atualizaLocalizarGeo('"+tipos[i]+"')") < 0)
  582 + {i3GEO.eventos.MOUSEMOVE.push("atualizaLocalizarGeo('"+tipos[i]+"')");}
  583 + }
  584 + else{
  585 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.coordenadas.atualizaProj4('"+tipos[i]+"')") < 0)
  586 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.coordenadas.atualizaProj4('"+tipos[i]+"')");}
  587 + }
  588 + }
  589 + }
  590 + if(i3GEO.coordenadas.formato === "bloco")
  591 + {i3GEO.coordenadas.ativaBloco();}
  592 + }
  593 + catch(e){}
215 594 }
216 595 };
217 596 \ No newline at end of file
... ...
classesjs/classe_interface.js
... ... @@ -467,8 +467,7 @@ i3GEO.Interface = {
467 467 objmapaparado = "nao"; //utilizado para verificar se o mouse esta parado
468 468 i3GEO.gadgets.mostraMenuSuspenso();
469 469 i3GEO.eventos.ativa(i);
470   - i3GEO.coordenadas.mostraCoordenadasGEO();
471   - i3GEO.coordenadas.mostraCoordenadasUTM();
  470 + i3GEO.coordenadas.mostraCoordenadas();
472 471 i3GEO.gadgets.mostraEscalaNumerica();
473 472 i3GEO.gadgets.mostraEscalaGrafica();
474 473 i3GEO.gadgets.visual.inicia();
... ... @@ -774,8 +773,7 @@ i3GEO.Interface = {
774 773 }
775 774  
776 775 };
777   - i3GEO.coordenadas.mostraCoordenadasGEO();
778   - i3GEO.coordenadas.mostraCoordenadasUTM();
  776 + i3GEO.coordenadas.mostraCoordenadas();
779 777 montaMapa();
780 778 //i3GEO.php.openlayers(montaMapa);
781 779 i3GEO.gadgets.mostraMenuSuspenso();
... ... @@ -1207,8 +1205,7 @@ i3GEO.Interface = {
1207 1205 i3GEO.gadgets.mostraInserirKml();
1208 1206 i3GEO.Interface.googlemaps.ativaBotoes();
1209 1207 i3GEO.eventos.ativa($i(i3GEO.Interface.IDMAPA));
1210   - i3GEO.coordenadas.mostraCoordenadasGEO();
1211   - i3GEO.coordenadas.mostraCoordenadasUTM();
  1208 + i3GEO.coordenadas.mostraCoordenadas();
1212 1209 i3GEO.gadgets.mostraEscalaNumerica();
1213 1210 i3GEO.gadgets.mostraMenuSuspenso();
1214 1211 i3GEO.idioma.mostraSeletor();
... ...
classesjs/compactajs.php
... ... @@ -96,6 +96,7 @@ packer(&quot;../pacotes/balloon-tooltips/htdocs/js/balloon.js&quot;,&quot;../pacotes/balloon-to
96 96 //gera um único js para a inicialização do I3Geo
97 97 //
98 98 $jsfiles = array(
  99 +"../pacotes/proj4js/lib/proj4js-compressed.js",
99 100 "../pacotes/cpaint/cpaint2_compacto.inc.js",
100 101 "../pacotes/yui270/build/yahoo/yahoo-min.js",
101 102 "../pacotes/yui270/build/yahoo-dom-event/yahoo-dom-event.js",
... ...
classesjs/i3geonaocompacto.js
... ... @@ -14,6 +14,7 @@ for (var i = 0; i &lt; scripts.length; i++) {
14 14 }
15 15 var allScriptTags = "";
16 16 var jsfiles = new Array(
  17 +"../pacotes/proj4js/lib/proj4js-compressed.js",
17 18 "../pacotes/yui270/build/yahoo/yahoo-min.js",
18 19 "../pacotes/yui270/build/yahoo-dom-event/yahoo-dom-event.js",
19 20 "../pacotes/yui270/build/dom/dom-min.js",
... ...
ferramentas/epsg.txt
1   -# Geográfica SAD69
  1 +# Geográfica SAD69 GRS67 4291
2 2 <4291> +proj=longlat +ellps=GRS67 +no_defs no_defs <>
  3 +# Geográfica SAD69 aust_SA 4618 (mais recente)
  4 +<4618> +proj=longlat +ellps=aust_SA +no_defs <>
3 5 # WGS 84
4 6 <4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs no_defs <>
5 7 # Corrego Alegre / UTM zone 21S
... ... @@ -14,29 +16,73 @@
14 16 <22525> +proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <>
15 17 # SAD69 / Brazil Polyconic
16 18 <29101> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs <>
17   -# SAD69 / UTM zone 19N
18   -<29119> +proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs <>
19   -# SAD69 / UTM zone 20N
20   -<29120> +proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs <>
21   -# SAD69 / UTM zone 21N
22   -<29121> +proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs <>
23   -# SAD69 / UTM zone 22N
24   -<29122> +proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs <>
25   -# SAD69 / UTM zone 17S
26   -<29177> +proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs <>
27   -# SAD69 / UTM zone 18S
28   -<29178> +proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs <>
29   -# SAD69 / UTM zone 19S
30   -<29179> +proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs <>
31   -# SAD69 / UTM zone 20S
32   -<29180> +proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs <>
33   -# SAD69 / UTM zone 21S
34   -<29181> +proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs <>
35   -# SAD69 / UTM zone 22S
36   -<29182> +proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs <>
37   -# SAD69 / UTM zone 23S
38   -<29183> +proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs <>
39   -# SAD69 / UTM zone 24S
40   -<29184> +proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs <>
41   -# SAD69 / UTM zone 25S
42   -<29185> +proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs <>
  19 +# SAD69 / UTM zone 18N
  20 +<29168> +proj=utm +zone=18 +ellps=aust_SA +units=m +no_defs <>
  21 +# SAD69 / UTM zone 19N
  22 +<29169> +proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs <>
  23 +# SAD69 / UTM zone 20N
  24 +<29170> +proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs <>
  25 +# SAD69 / UTM zone 21N
  26 +<29171> +proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs <>
  27 +# SAD69 / UTM zone 22N
  28 +<29172> +proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs <>
  29 +# SAD69 / UTM zone 17S
  30 +<29187> +proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs <>
  31 +# SAD69 / UTM zone 18S
  32 +<29188> +proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs <>
  33 +# SAD69 / UTM zone 19S
  34 +<29189> +proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs <>
  35 +# SAD69 / UTM zone 20S
  36 +<29190> +proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs <>
  37 +# SAD69 / UTM zone 21S
  38 +<29191> +proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs <>
  39 +# SAD69 / UTM zone 22S
  40 +<29192> +proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs <>
  41 +# SAD69 / UTM zone 23S
  42 +<29193> +proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs <>
  43 +# SAD69 / UTM zone 24S
  44 +<29194> +proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs <>
  45 +# SAD69 / UTM zone 25S
  46 +<29195> +proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs <>
  47 +# SIRGAS 2000 / UTM zone 11N
  48 +<31965> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  49 +# SIRGAS 2000 / UTM zone 12N
  50 +<31966> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  51 +# SIRGAS 2000 / UTM zone 13N
  52 +<31967> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  53 +# SIRGAS 2000 / UTM zone 14N
  54 +<31968> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  55 +# SIRGAS 2000 / UTM zone 15N
  56 +<31969> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  57 +# SIRGAS 2000 / UTM zone 16N
  58 +<31970> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  59 +# SIRGAS 2000 / UTM zone 17N
  60 +<31971> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  61 +# SIRGAS 2000 / UTM zone 18N
  62 +<31972> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  63 +# SIRGAS 2000 / UTM zone 19N
  64 +<31973> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  65 +# SIRGAS 2000 / UTM zone 20N
  66 +<31974> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  67 +# SIRGAS 2000 / UTM zone 21N
  68 +<31975> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  69 +# SIRGAS 2000 / UTM zone 22N
  70 +<31976> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  71 +# SIRGAS 2000 / UTM zone 17S
  72 +<31977> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  73 +# SIRGAS 2000 / UTM zone 18S
  74 +<31978> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  75 +# SIRGAS 2000 / UTM zone 19S
  76 +<31979> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  77 +# SIRGAS 2000 / UTM zone 20S
  78 +<31980> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  79 +# SIRGAS 2000 / UTM zone 21S
  80 +<31981> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  81 +# SIRGAS 2000 / UTM zone 22S
  82 +<31982> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  83 +# SIRGAS 2000 / UTM zone 23S
  84 +<31983> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  85 +# SIRGAS 2000 / UTM zone 24S
  86 +<31984> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
  87 +# SIRGAS 2000 / UTM zone 25S
  88 +<31985> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
43 89 \ No newline at end of file
... ...