Commit 6a57ec978b8da81228eb24b13287344b31271748

Authored by Edmar Moretti
1 parent ec18d2cd

Inclusão de cálculo de coordenadas na ferramenta identifica usando a classe_coordenadas.js

classesjs/classe_coordenadas.js
... ... @@ -32,7 +32,12 @@ if(typeof(i3GEO) === 'undefined'){
32 32 /*
33 33 Classe: i3GEO.coordenadas
34 34  
35   -Inclui elementos especiais no mapa para apresentação de coordenadas
  35 +Inclui elementos especiais no mapa para apresentação de coordenadas.
  36 +
  37 +Contém funções que permitem a conversão de coordenadas, entre sistemas de projeção deiferentes, com base na biblioteca Proj4js.
  38 +Cria também o bloco de apresentação de coordenadas com base na posição do mouse sobre o mapa.
  39 +Mais informações em http://trac.osgeo.org/proj4js/
  40 +Para adicionar novas projeções ou modificar as atuais, edit a variável i3GEO.coordenadas.config e defOrigem
36 41  
37 42 */
38 43 i3GEO.coordenadas = {
... ... @@ -54,12 +59,15 @@ i3GEO.coordenadas = {
54 59 separado - mostra todos os tipos em lugares diferentes conforme o valor de idhtml
55 60  
56 61 lista - mostra cada tipo em um lugar diferente conforme o valor de idhtml
  62 +
  63 + janela - cria uma janela flutuante para mostrar os dados
  64 +
57 65 */
58 66 formato: "bloco", //bloco,separado,lista,janela
59 67 /*
60 68 Propriedade: padrao
61 69  
62   - Indica qual tipo de coordenada é mostrado como padrão. Deve existir em i3GEO.coordenadas.config
  70 + Indica qual tipo de coordenada é mostrado como padrão quando formato for igual a "bloco". Deve existir em i3GEO.coordenadas.config
63 71  
64 72 Default:
65 73 "geoProj"
... ... @@ -78,9 +86,9 @@ i3GEO.coordenadas = {
78 86 /*
79 87 Propriedade: config
80 88  
81   - Define as configurações de cada tipo de coordenada mostrada
  89 + Define as configurações de cada tipo de coordenada que será utilizada e/ou mostrada no mapa
82 90  
83   - Para alterar os parâmetros ou acrescentar novas projeções, altere esse objeto por meio de javascript
  91 + Para alterar os parâmetros ou acrescentar novas projeções, altere esse objeto
84 92  
85 93 Para mais detalhes, veja i3geo/classesjs/classe_coordenada.js
86 94  
... ... @@ -97,7 +105,7 @@ i3GEO.coordenadas = {
97 105 "policonicaSad69":{
98 106 idhtml: "localizarxy",
99 107 tipo: "metrica",
100   - titulo: "Policônica SAD-69",
  108 + titulo: "Polic SAD-69",
101 109 ativo: true,
102 110 defepsg: "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs"
103 111 },
... ... @@ -126,7 +134,7 @@ i3GEO.coordenadas = {
126 134 "utmSirgas2000Proj":{
127 135 idhtml: "localizarxy",
128 136 tipo: "utm",
129   - titulo: "UTM Sirgas 2000",
  137 + titulo: "UTM Sirgas",
130 138 ativo: true,
131 139 defepsg: "",
132 140 zona:{
... ... @@ -337,7 +345,7 @@ i3GEO.coordenadas = {
337 345 */
338 346 criaMascaraDMS: function(prefixo,titulo,caixa){
339 347 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>" +
  348 + "<td style=width:120px;text-align:right >"+titulo+" X:&nbsp;</td>" +
341 349 "<td>"+$inputText("","315",prefixo+"xg","grau","3","-00")+"&nbsp;</td>" +
342 350 "<td>"+$inputText("","",prefixo+"xm","minuto","3","00")+"&nbsp;</td>" +
343 351 "<td>"+$inputText("","",prefixo+"xs","segundo","5","00.00")+"&nbsp;</td>" +
... ... @@ -395,7 +403,7 @@ i3GEO.coordenadas = {
395 403 */
396 404 criaMascaraMetrica: function(prefixo,titulo,caixa){
397 405 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>" +
  406 + "<td style=width:120px;text-align:right >"+titulo+" X:&nbsp;</td>" +
399 407 "<td>"+$inputText("","",prefixo+"X","X","12","00")+"&nbsp;</td>" +
400 408 "<td>Y:"+$inputText("","",prefixo+"Y","Y","12","00")+"&nbsp;</td>" +
401 409 "<td>Zn:"+$inputText("","",prefixo+"ZN","Zona","2","--")+"&nbsp;</td>" +
... ... @@ -415,39 +423,71 @@ i3GEO.coordenadas = {
415 423 configProj {string}
416 424  
417 425 */
418   - atualizaProj4: function(configProj){
  426 + atualizaProj4: function(onde,configProj,x,y){
  427 + try{
  428 + if(!$i(onde+configProj+"ZN"))
  429 + {return;}
  430 + }
  431 + catch(e){return;}
419 432 eval("temp = i3GEO.coordenadas.config."+configProj+";");
420 433 try{
421   - if($i(configProj).style.display == "none")
  434 + if($i(onde+configProj).style.display == "none")
422 435 {return;}
423 436 }
424 437 catch(e){}
425 438 if(temp.tipo === "metrica"){
426 439 var destino = temp.defepsg;
427 440 }
  441 + if(x == undefined)
  442 + {x = objposicaocursor.ddx;}
  443 + if(y == undefined)
  444 + {y = objposicaocursor.ddy;}
428 445 if(temp.tipo === "utm"){
429   - var zona = i3GEO.coordenadas.geo2zonaUtm(objposicaocursor.ddx);
430   - $i(configProj+"ZN").value = zona
  446 + var zona = i3GEO.coordenadas.geo2zonaUtm(x);
  447 + $i(onde+configProj+"ZN").value = zona
431 448 if(objposicaocursor.ddy*1 > 0)
432 449 {var destino = temp.zona[zona+"N"];}
433 450 else
434 451 {var destino = temp.zona[zona+"S"];}
435 452 if(destino == undefined){
436   - i3GEO.util.defineValor(configProj+"X","value","?");
437   - i3GEO.util.defineValor(configProj+"Y","value","?");
  453 + i3GEO.util.defineValor(onde+configProj+"X","value","?");
  454 + i3GEO.util.defineValor(onde+configProj+"Y","value","?");
438 455 return;
439 456 }
440 457 }
  458 + var p = i3GEO.coordenadas.calculaProj4(i3GEO.coordenadas.defOrigem,destino,x,y);
  459 + i3GEO.util.defineValor(onde+configProj+"X","value",p.x);
  460 + i3GEO.util.defineValor(onde+configProj+"Y","value",p.y);
  461 + },
  462 + /*
  463 + Function: calculaProj4
  464 +
  465 + Faz a projeção de x e y da origem para o destino
  466 +
  467 + Parametros:
  468 +
  469 + origem {string} - CRS contendo o código da projeção de origem
  470 +
  471 + destino {string} - CRS contendo o código da projeção de destino
  472 +
  473 + x {numerico} - coordenada x ou longitude
  474 +
  475 + y {numerico} - coordenada y ou latitude
  476 +
  477 + Retorno:
  478 +
  479 + {Proj4js.transform}
  480 + */
  481 + calculaProj4: function(origem,destino,x,y){
441 482 Proj4js.defs = {
442   - 'ORIGEM' : i3GEO.coordenadas.defOrigem,
  483 + 'ORIGEM' : origem,
443 484 'DESTINO': destino
444 485 };
445 486 var source = new Proj4js.Proj("ORIGEM"),
446 487 dest = new Proj4js.Proj("DESTINO"),
447   - p = new Proj4js.Point(objposicaocursor.ddx,objposicaocursor.ddy);
  488 + p = new Proj4js.Point(x,y);
448 489 Proj4js.transform(source, dest, p);
449   - i3GEO.util.defineValor(configProj+"X","value",p.x);
450   - i3GEO.util.defineValor(configProj+"Y","value",p.y);
  490 + return p;
451 491 },
452 492 /*
453 493 Function: ativaBloco
... ... @@ -456,7 +496,7 @@ i3GEO.coordenadas = {
456 496  
457 497 Mostra o que estiver definido em i3GEO.coordenadas.padrao
458 498 */
459   - ativaBloco: function(){
  499 + ativaBloco: function(prefixo){
460 500 var tipos = i3GEO.util.listaChaves(i3GEO.coordenadas.config),
461 501 n = tipos.length,
462 502 temp,
... ... @@ -468,9 +508,9 @@ i3GEO.coordenadas = {
468 508 eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
469 509 if(temp.ativo === true){
470 510 if(tipos[i] == i3GEO.coordenadas.padrao)
471   - {$i(tipos[i]).style.display = "block";}
  511 + {$i(prefixo+tipos[i]).style.display = "block";}
472 512 else
473   - {$i(tipos[i]).style.display = "none";}
  513 + {$i(prefixo+tipos[i]).style.display = "none";}
474 514 }
475 515 }
476 516 },
... ... @@ -483,7 +523,7 @@ i3GEO.coordenadas = {
483 523  
484 524 tipo {string} - tipo de coordenada
485 525 */
486   - mudaTipo: function(obj){
  526 + mudaTipo: function(obj,onde){
487 527 if(obj.value === "janela"){
488 528 i3GEO.coordenadas.formato = "janela";
489 529 i3GEO.coordenadas.mostraCoordenadas();
... ... @@ -491,22 +531,37 @@ i3GEO.coordenadas = {
491 531 }
492 532 i3GEO.coordenadas.padrao = obj.value;
493 533 obj.selectedIndex = 0;
494   - i3GEO.coordenadas.ativaBloco();
  534 + i3GEO.coordenadas.ativaBloco(onde);
495 535 },
496 536 /*
497 537 Function: mostraCoordenadas
498 538  
499 539 Constrói o conjunto de elementos HTML para mostrar as coordenadas e define as funções de atualização.
  540 +
  541 + Parametro:
  542 +
  543 + ativaMovimento {boolean} - (opcional) aplica ou não as funções ligadas à movimentação do mouse
  544 +
  545 + onde {string} - (opcional) id onde o resultado será mostrado (irá ignorar os ids definidos em coordenadas.config)
500 546 */
501   - mostraCoordenadas: function(){
  547 + mostraCoordenadas: function(ativaMovimento,onde,x,y){
502 548 try{
503 549 var tipos = i3GEO.util.listaChaves(i3GEO.coordenadas.config),
504 550 n = tipos.length,
505 551 temp,
506 552 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>";
  553 + i = 0;
  554 + if(arguments.length === 0){
  555 + var ativaMovimento = true;
  556 + var onde = "";
  557 + }
  558 +
  559 + //
  560 + //cria o HTML
  561 + //
  562 + if(onde === "")
  563 + {eval("onde = i3GEO.coordenadas.config."+tipos[0]+".idhtml;");}
  564 + var caixa = "<select onchange='javascript:i3GEO.coordenadas.mudaTipo(this,\""+onde+"\");' style='font-size:10px;height:15px;width:50px;' ><option>---</option><option value='janela' >janela</option>";
510 565 //
511 566 //cria a caixa de seleção
512 567 //
... ... @@ -518,25 +573,20 @@ i3GEO.coordenadas = {
518 573 }
519 574 caixa += "</select>";
520 575 if(i3GEO.coordenadas.formato !== "bloco")
521   - {caixa = "";}
522   - //
523   - //cria o HTML
524   - //
  576 + {caixa = "";}
525 577 for(i=0;i<n;i++){
526 578 eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
527 579 if(temp.ativo === true){
528 580 if(temp.tipo === "geo"){
529   - ins += i3GEO.coordenadas.criaMascaraDMS(tipos[i],temp.titulo,caixa);
  581 + ins += i3GEO.coordenadas.criaMascaraDMS(onde+tipos[i],temp.titulo,caixa);
530 582 if(i3GEO.coordenadas.formato === "separado"){
531 583 try{$i(temp.idhtml).innerHTML = ins;}
532 584 catch(e){}
533 585 ins = "";
534 586 }
535   - else
536   - {onde = temp.idhtml;}
537 587 }
538 588 else{
539   - ins += i3GEO.coordenadas.criaMascaraMetrica(tipos[i],temp.titulo,caixa);
  589 + ins += i3GEO.coordenadas.criaMascaraMetrica(onde+tipos[i],temp.titulo,caixa);
540 590 }
541 591 }
542 592 }
... ... @@ -564,7 +614,7 @@ i3GEO.coordenadas = {
564 614 {$i(onde).innerHTML = "";}
565 615 onde = "i3GEOJanelaCoordenadas_corpo";
566 616 }
567   - if($i(onde))
  617 + if(onde != "" && $i(onde))
568 618 {$i(onde).innerHTML = ins;}
569 619 //
570 620 //aplica as funções de movimentação do mouse
... ... @@ -573,22 +623,36 @@ i3GEO.coordenadas = {
573 623 eval("temp = i3GEO.coordenadas.config."+tipos[i]+";");
574 624 if(temp.ativo === true){
575 625 if(temp.tipo === "geo"){
576   - atualizaLocalizarGeo = function(id){
  626 + atualizaLocalizarGeo = function(id,x,y){
  627 + if(x == undefined)
  628 + {x = objposicaocursor.dmsx;}
  629 + if(y == undefined)
  630 + {y = objposicaocursor.dmsy;}
577 631 temp = $i(id);
578 632 if(temp && temp.style.display == "block")
579   - {i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,id);}
  633 + {i3GEO.coordenadas.atualizaGeo(x,y,id);}
580 634 };
581   - if(i3GEO.eventos.MOUSEMOVE.toString().search("atualizaLocalizarGeo('"+tipos[i]+"')") < 0)
582   - {i3GEO.eventos.MOUSEMOVE.push("atualizaLocalizarGeo('"+tipos[i]+"')");}
  635 + if(ativaMovimento === true){
  636 + if(i3GEO.eventos.MOUSEMOVE.toString().search("atualizaLocalizarGeo('"+onde+tipos[i]+"')") < 0)
  637 + {i3GEO.eventos.MOUSEMOVE.push("atualizaLocalizarGeo('"+onde+tipos[i]+"')");}
  638 + }
  639 + if(x != undefined){
  640 + atualizaLocalizarGeo(onde+tipos[i],i3GEO.calculo.dd2dms(x)[0],i3GEO.calculo.dd2dms(y)[0]);
  641 + }
583 642 }
584 643 else{
585   - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.coordenadas.atualizaProj4('"+tipos[i]+"')") < 0)
586   - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.coordenadas.atualizaProj4('"+tipos[i]+"')");}
  644 + if(ativaMovimento === true){
  645 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.coordenadas.atualizaProj4('"+onde+"','"+tipos[i]+"')") < 0)
  646 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.coordenadas.atualizaProj4('"+onde+"','"+tipos[i]+"')");}
  647 + }
  648 + if(x != undefined){
  649 + i3GEO.coordenadas.atualizaProj4(onde,tipos[i],x,y);
  650 + }
587 651 }
588 652 }
589 653 }
590 654 if(i3GEO.coordenadas.formato === "bloco")
591   - {i3GEO.coordenadas.ativaBloco();}
  655 + {i3GEO.coordenadas.ativaBloco(onde);}
592 656 }
593 657 catch(e){}
594 658 }
... ...
ferramentas/identifica/index.js.php
... ... @@ -159,6 +159,9 @@ i3GEOF.identifica = {
159 159 $i("i3GEOidentificaguia5").onclick = function(){
160 160 i3GEO.guias.mostraGuiaFerramenta("i3GEOidentificaguia5","i3GEOidentificaguia");
161 161 var ins = "",retorna;
  162 + i3GEO.coordenadas.formato = "lista";
  163 + i3GEO.coordenadas.mostraCoordenadas(false,"i3GEOidentificacoord",i3GEOF.identifica.x,i3GEOF.identifica.y);
  164 + /*
162 165 $i("i3GEOidentificacoord").innerHTML = "Aguarde...";
163 166 retorna = function(utm){
164 167 temp = i3GEO.calculo.dd2dms(i3GEOF.identifica.x,i3GEOF.identifica.y);
... ... @@ -175,6 +178,7 @@ i3GEOF.identifica = {
175 178 $i("i3GEOidentificacoord").innerHTML = ins;
176 179 };
177 180 i3GEO.php.geo2utm(retorna,i3GEOF.identifica.x,i3GEOF.identifica.y);
  181 + */
178 182 };
179 183  
180 184 i3GEOF.identifica.listaTemas("ligados");
... ...
interface/geral.htm
... ... @@ -13,7 +13,7 @@
13 13 o arquivo i3geo.js por i3geonaocompacto.js
14 14 No modo não compactado o código está adaptado para uso com o Firebug do Firefox.
15 15 -->
16   -<script type="text/javascript" src="../classesjs/i3geo.js"></script>
  16 +<script type="text/javascript" src="../classesjs/i3geonaocompacto.js"></script>
17 17 <style>
18 18 .yui-log .i3geo {background-color:yellow;} /* customize a color */
19 19 .yui-log .redesenho {background-color:yellow;} /* customize a color */
... ... @@ -132,8 +132,8 @@ vc pode optar por colocar mensagens de ajuda em algum lugar
132 132 </td>
133 133 <td class=tdbranca >
134 134 <table width=100% ><tr>
135   - <td class=tdbranca width="33%" ><div id=lugarquadros ></div></td>
136   - <td class=tdbranca width="33%" style=text-align:center >
  135 + <td class=tdbranca width="23%" ><div id=lugarquadros ></div></td>
  136 + <td class=tdbranca width="43%" style=text-align:center >
137 137 <!-- aqui será incluído o gadget que mostra a coordenada geográfica da posição do mouse -->
138 138 <div id=localizarxy style="text-align:left;font-size:10px;">Aguarde...</div>
139 139 </td>
... ...