From 0625955c40e67202fe1de931db2fd2d4ba452a07 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 9 Dec 2010 14:18:55 +0000 Subject: [PATCH] Opção da arvore de camadas pemrite agora destacar os temas q não estão na abrangencia ëspacial do mapa --- aplicmap/geral1.map | 1 + aplicmap/geral1windows.map | 1 + classesjs/classe_analise.js | 3 +++ classesjs/classe_arvoredecamadas.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- classesjs/classe_interface.js | 4 ++-- classesjs/classe_util.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ classesphp/classe_mapa.php | 14 +++++++++++--- interface/openlayers.htm | 1 + 8 files changed, 151 insertions(+), 9 deletions(-) diff --git a/aplicmap/geral1.map b/aplicmap/geral1.map index 4544e8e..29735e5 100644 --- a/aplicmap/geral1.map +++ b/aplicmap/geral1.map @@ -239,6 +239,7 @@ MAP "ESCALA" "250000" #escala utilizada nas marcas ao lado do tema na legenda "IDENTIFICA" "nao" "cache" "sim" + "EXTENSAO" "-97.911949 -39.413578 -8.185829 9.511159" END NAME "estados" SIZEUNITS PIXELS diff --git a/aplicmap/geral1windows.map b/aplicmap/geral1windows.map index d9a4a04..49373b1 100644 --- a/aplicmap/geral1windows.map +++ b/aplicmap/geral1windows.map @@ -239,6 +239,7 @@ MAP "ESCALA" "250000" #escala utilizada nas marcas ao lado do tema na legenda "IDENTIFICA" "nao" #"ESCONDIDO" "sim" + "EXTENSAO" "-97.911949 -39.413578 -8.185829 9.511159" "cache" "sim" END NAME "estados" diff --git a/classesjs/classe_analise.js b/classesjs/classe_analise.js index 5cf0c3e..6d8b68b 100644 --- a/classesjs/classe_analise.js +++ b/classesjs/classe_analise.js @@ -323,6 +323,8 @@ i3GEO.analise = { YAHOO.util.Event.removeListener(YAHOO.janelaDocamede.xp.panel.close, "click"); i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.clique()"); i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento()"); + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()"); + if($i("mostradistancia_c")){document.body.removeChild($i("mostradistancia_c"));} i3GEO.barraDeBotoes.ativaBotoes(); }, @@ -570,6 +572,7 @@ i3GEO.analise = { YAHOO.util.Event.removeListener(YAHOO.janelaDocaarea.xp.panel.close, "click"); i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeArea.clique()"); i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeArea.movimento()"); + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeArea.fechaJanela()"); if($i("mostraarea_c")){document.body.removeChild($i("mostraarea_c"));} i3GEO.barraDeBotoes.ativaBotoes(); }, diff --git a/classesjs/classe_arvoredecamadas.js b/classesjs/classe_arvoredecamadas.js index 5aef4c7..8869456 100644 --- a/classesjs/classe_arvoredecamadas.js +++ b/classesjs/classe_arvoredecamadas.js @@ -47,6 +47,20 @@ Exemplos: */ i3GEO.arvoreDeCamadas = { /* + Propriedade: VERIFICAABRANGENCIATEMAS + + Verifica ou não se um tema da árvore está dentro da abrangência do mapa atual + + A verificação só é feita se o tema possuir a extensão geográfica registrada (veja o sistema de administração) + + Default: + {true} + + Type: + {boolean} + */ + VERIFICAABRANGENCIATEMAS: true, + /* Propriedade: finaliza Nome de uma função que será executada após a árvore ter sido montada @@ -248,7 +262,9 @@ i3GEO.arvoreDeCamadas = { "iconetema":"", - "permitecomentario":"" + "permitecomentario":"", + + "exttema":"" } ] @@ -508,6 +524,10 @@ i3GEO.arvoreDeCamadas = { if(i3GEO.temaAtivo !== ""){ i3GEO.mapa.ativaTema(i3GEO.temaAtivo); } + i3GEO.arvoreDeCamadas.verificaAbrangenciaTemas(); + if(i3GEO.arvoreDeCamadas.VERIFICAABRANGENCIATEMAS == true && i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.arvoreDeCamadas.verificaAbrangenciaTemas()") < 0) + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.arvoreDeCamadas.verificaAbrangenciaTemas()");} + }, /* Function: ativaDragDrop @@ -1020,9 +1040,9 @@ i3GEO.arvoreDeCamadas = { {estilo = "cursor:move;vertical-align:top;";} if(i3GEO.arvoreDeCamadas.AGUARDALEGENDA) - {html += " "+tema.tema+"";} + {html += " "+tema.tema+"";} else - {html += " "+tema.tema+"";} + {html += " "+tema.tema+"";} html += "

"; return(html); @@ -1359,5 +1379,38 @@ i3GEO.arvoreDeCamadas = { } while(i < nelementos); } - } + }, + verificaAbrangenciaTemas: function(){ + if(typeof(console) !== 'undefined'){console.info("i3GEO.arvoreDeCamadas.verificaAbrangenciaTemas()");} + if(i3GEO.arvoreDeCamadas.VERIFICAABRANGENCIATEMAS == false) + {return} + try{ + var resultado = [], + i = 0, + temp, + nelementos = i3GEO.arvoreDeCamadas.CAMADAS.length, + ltema, + intersec, + node; + if (nelementos > 0){ + do{ + ltema = i3GEO.arvoreDeCamadas.CAMADAS[i]; + temp = ltema.exttema; + if(temp != ""){ + intersec = i3GEO.util.intersectaBox(temp,i3GEO.parametros.mapexten); + node = $i("ArvoreTituloTema"+ltema.name); + if(intersec == false){ + node.style.color = "gray"; + } + else{ + node.style.color = "black"; + } + } + i++; + } + while(i < nelementos); + } + } + catch(e){} + } }; diff --git a/classesjs/classe_interface.js b/classesjs/classe_interface.js index a9e60a0..57f777f 100644 --- a/classesjs/classe_interface.js +++ b/classesjs/classe_interface.js @@ -908,14 +908,14 @@ i3GEO.Interface = { }, loadStartLayer: function(event){ i3GEO.Interface.STATUS.atualizando.push(event.object.name); - var i = $i("arrastar_"+event.object.name); + var i = $i("ArvoreTituloTema"+event.object.name); if(i){ i.style.backgroundColor = "RGB(240,240,240)"; } }, loadStopLayer: function(event){ i3GEO.Interface.STATUS.atualizando.remove(event.object.name); - var i = $i("arrastar_"+event.object.name); + var i = $i("ArvoreTituloTema"+event.object.name); if(i){ i.style.backgroundColor = ""; } diff --git a/classesjs/classe_util.js b/classesjs/classe_util.js index ff1e0e2..6fe7a64 100644 --- a/classesjs/classe_util.js +++ b/classesjs/classe_util.js @@ -1953,12 +1953,87 @@ i3GEO.util = { var js = i3GEO.configura.locaplic+"/ferramentas/"+dir+"/index.js.php"; i3GEO.util.scriptTag(js,"i3GEOF."+nome+".criaJanelaFlutuante()","i3GEOF."+nome+"_script"); }, + /* + Function: bookmark + + Cria os botões de bookmark em redes sociais + + Gera o HTML contendo as tags IMG com os links + + Parametro: + + link {string} - link que será marcado + + Return: + + HTML com os botões + */ bookmark: function(link){ ins = " "; ins += " "; ins += " "; ins += ""; return ins; + }, + /* + Function: intersectaBox + + Verifica se um retângulo está dentro de outro retângulo + + Parametros: + + box1 - retângulo que será verificado + + box2 - retângulo de referência + + Return: + + boolean + */ + intersectaBox: function(box1,box2){ + var box1 = box1.split(" "), + box2 = box2.split(" "), + box1i = box2, + box2i = box1, + coordx, + coordy, + i; + coordx = box1[0]*1; + coordy = box1[1]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + coordx = box1[0]*1; + coordy = box1[3]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + coordx = box1[2]*1; + coordy = box1[3]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + coordx = box1[2]*1; + coordy = box1[1]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + + box1 = box1i; + box2 = box2i; + + coordx = box1[0]*1; + coordy = box1[1]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + coordx = box1[0]*1; + coordy = box1[3]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + coordx = box1[2]*1; + coordy = box1[3]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + coordx = box1[2]*1; + coordy = box1[1]*1; + if(coordx >= box2[0]*1 && coordx <= box2[2]*1 && coordy >= box2[1]*1 && coordy <= box2[3]*1) + {return true;} + + return false; } }; diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index d822f7a..906c28e 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -197,9 +197,16 @@ string - javascript com os parametros // //verifica se o tema pode receber a operação de zoom para o tema // - $zoomtema = "sim"; if (($ct != 1) && ($oLayer->getmetadata("extensao") == "")) - {$zoomtema = "nao";} + { + $zoomtema = "nao"; + $exttema = ""; + } + else + { + $zoomtema = "sim"; + $exttema = $oLayer->getmetadata("extensao"); + } // //verifica se existe restrição de escala // @@ -244,7 +251,8 @@ string - javascript com os parametros "escondido"=>strtolower($escondido), "iconetema"=>($oLayer->getmetadata("iconetema")), "classe"=>($oLayer->getmetadata("classe")), - "permitecomentario"=>$permitecomentario + "permitecomentario"=>$permitecomentario, + "exttema"=>$exttema ); } } diff --git a/interface/openlayers.htm b/interface/openlayers.htm index 6588c3e..09fcb65 100644 --- a/interface/openlayers.htm +++ b/interface/openlayers.htm @@ -207,6 +207,7 @@ i3GEO.Interface.ATIVAMENUCONTEXTO = false; i3GEO.arvoreDeTemas.TIPOBOTAO = "radio"; i3GEO.arvoreDeTemas.ATIVATEMAIMEDIATO = true; i3GEO.arvoreDeTemas.OPCOESADICIONAIS.comentarios = true; +i3GEO.arvoreDeCamadas.VERIFICAABRANGENCIATEMAS = true; // //esta é uma variável interna do OpenLayers que define o endereço do diretório onde estão as imagens usadas nos ícones // -- libgit2 0.21.2