From ba84fc025367b63e50ed4323294f78ea33685d59 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 10 Feb 2016 21:18:44 -0200 Subject: [PATCH] Inclusão da opção cluster na legenda e correção na aplicação de offset em estilos --- classesphp/classe_legenda.php | 6 ++++++ classesphp/classe_temas.php | 25 +++++++++++++++++++++++++ classesphp/funcoes_gerais.php | 5 ++++- ferramentas/legenda/dicionario.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- ferramentas/legenda/exec.php | 19 +++++++++++++++++++ ferramentas/legenda/index.js | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- ferramentas/legenda/template_mst.html | 42 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 238 insertions(+), 28 deletions(-) diff --git a/classesphp/classe_legenda.php b/classesphp/classe_legenda.php index 5942b26..6a31f83 100755 --- a/classesphp/classe_legenda.php +++ b/classesphp/classe_legenda.php @@ -1106,6 +1106,12 @@ class Legenda case "width": $estilo->set("width",$valor); continue; + case "offsetx": + $estilo->set("offsetx",$valor); + continue; + case "offsety": + $estilo->set("offsety",$valor); + continue; case "opacity": $estilo->set("opacity",$valor); continue; diff --git a/classesphp/classe_temas.php b/classesphp/classe_temas.php index 48d9bca..a0bb2a9 100755 --- a/classesphp/classe_temas.php +++ b/classesphp/classe_temas.php @@ -1296,5 +1296,30 @@ Adiciona LABEL em uma classe de um tema $this->layer->setMetaData("cache",""); } } + function criaCluster ($group = "",$filter = "",$maxdistance=5,$region='rectangle',$buffer=0){ + if($group != ""){ + $group = "('[".$group."]')"; + } + $cluster = $this->layer->cluster; + + $par = "BUFFER $buffer REGION $region MAXDISTANCE $maxdistance"; + if($group != ""){ + $par .= " GROUP ".$group; + } + if($filter != ""){ + $par .= " FILTER ".$filter; + } + $cluster->updateFromString("CLUSTER $par END"); + $this->layer->setMetaData("cache",""); + $this->layer->setMetadata("tiles","NAO"); + $this->layer->setMetadata("cortepixels",0); + } + function removeCluster(){ + $cluster = $this->layer->cluster; + $this->layer->updatefromstring("LAYER CLUSTER END END"); + $this->layer->setMetaData("cache",""); + $this->layer->setMetadata("tiles","NAO"); + $this->layer->setMetadata("cortepixels",0); + } } ?> diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index f55c857..d9be41b 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2826,7 +2826,10 @@ function restauraMapaAdmin($id_mapa,$dir_tmp){ //verifica se existem parametros junto com o registro $registro = explode(",",$registro); $mapfile = $registro[0]; - $s = fwrite($baseh,base64_decode($mapfile)); + //adapta para versoes novas do mapserver + $mapfile = base64_decode($mapfile); + $mapfile = str_replace("TYPE ANNOTATION","TYPE POINT",$mapfile); + $s = fwrite($baseh,$mapfile); fclose($baseh); } $dbh = null; diff --git a/ferramentas/legenda/dicionario.js b/ferramentas/legenda/dicionario.js index b3dd863..5b3a35e 100755 --- a/ferramentas/legenda/dicionario.js +++ b/ferramentas/legenda/dicionario.js @@ -45,7 +45,7 @@ i3GEOF.legenda.dicionario = ], 'importaExportaSLD' : [ { - pt : "Importar/exportar SLD", + pt : "SLD", en : "", es : "" } @@ -793,5 +793,54 @@ i3GEOF.legenda.dicionario = en : "", es : "" } - ] + ], + "cluster" : [ + { + pt : "Cluster", + en : "", + es : "" + } + ], + "ClusterMaxdistance" : [ + { + pt : "Distância (pixels) máxima entre os pontos que será considerada para permitir o agrupamento", + en : "", + es : "" + } + ], + "ClusterBuffer" : [ + { + pt : "Distância em pixel, no entorno da extensão geográfica do mapa ou dos tiles, se for o caso, que extende a área de pesuisa dos pontos para formação do agrupamento", + en : "", + es : "" + } + ], + "ClusterFilter" : [ + { + pt : "Filtro que será aplicado para restringir os pontos que podem participar do agrupamento. A sintaxe do filtro é a mesma utilizada na definição das expressões que definem cada classe (ver o editor de classes)", + en : "", + es : "" + } + ], + "ClusterRegion" : [ + { + pt : "Tipo de forma que será utilizada na definição da região de busca dos pontos que formarão o agrupamento", + en : "", + es : "" + } + ], + "ClusterGroup" : [ + { + pt : "Item que será utilizado para separar os diferentes agrupamentos", + en : "", + es : "" + } + ], + "remover" : [ + { + pt : "Remover", + en : "", + es : "" + } + ] }; diff --git a/ferramentas/legenda/exec.php b/ferramentas/legenda/exec.php index 0e183c6..5230c0f 100755 --- a/ferramentas/legenda/exec.php +++ b/ferramentas/legenda/exec.php @@ -98,6 +98,25 @@ Acrescenta a contagem de elementos em cada classe. if (!$r){$r = "erro.Erro legenda nao disponivel";} $retorno = $r; break; + case "APLICARCLUSTER": + include_once(dirname(__FILE__)."/../../classesphp/classe_temas.php"); + $m = new Temas($map_file,$tema); + $l = $m->mapa->getlayerbyname($tema); + if($filter != ""){ + $filter = base64decode($filter); + } + $m->criaCluster($group,$filter,$maxdistance,$region,$buffer); + $m->salva(); + $retorno = "ok"; + break; + case "REMOVERCLUSTER": + include_once(dirname(__FILE__)."/../../classesphp/classe_temas.php"); + $m = new Temas($map_file,$tema); + $l = $m->mapa->getlayerbyname($tema); + $m->removeCluster(); + $m->salva(); + $retorno = "ok"; + break; } if (!connection_aborted()){ if(isset($map_file) && isset($postgis_mapa) && $map_file != "") diff --git a/ferramentas/legenda/index.js b/ferramentas/legenda/index.js index c83c573..d04866d 100755 --- a/ferramentas/legenda/index.js +++ b/ferramentas/legenda/index.js @@ -135,6 +135,10 @@ i3GEOF.legenda = $i(iddiv).innerHTML += i3GEOF.legenda.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia1", "i3GEOlegendaguia"); // eventos das guias + $i("i3GEOlegendaguia7").onclick = function() { + i3GEOF.legenda.ativaAplicar("none"); + i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia7", "i3GEOlegendaguia"); + }; $i("i3GEOlegendaguia6").onclick = function() { i3GEOF.legenda.ativaAplicar("none"); i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia6", "i3GEOlegendaguia"); @@ -159,6 +163,21 @@ i3GEOF.legenda = i3GEOF.legenda.ativaAplicar("none"); i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia5", "i3GEOlegendaguia"); }; + + var b = new YAHOO.widget.Button("i3GEOlegendabotaoAplicarCluster", { + onclick : { + fn : i3GEOF.legenda.aplicarCluster + } + }); + b.addClass("rodar"); + + var b = new YAHOO.widget.Button("i3GEOlegendabotaoRemoverCluster", { + onclick : { + fn : i3GEOF.legenda.removerCluster + } + }); + b.addClass("rodar"); + var b = new YAHOO.widget.Button("i3GEOlegendabotao1", { onclick : { fn : i3GEOF.legenda.mudaLegenda @@ -357,29 +376,7 @@ i3GEOF.legenda = b.addClass("abrir100"); i3GEOF.legenda.ativaFoco(); i3GEOF.legenda.mostralegenda(); - i3GEO.util.comboItens("", i3GEOF.legenda.tema, function(retorno) { - if ($i("i3GEOlegendaitensValorUnico")) { - $i("i3GEOlegendaitensValorUnico").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaClassesValorUnico")) { - $i("i3GEOlegendaClassesValorUnico").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaitensMetade")) { - $i("i3GEOlegendaitensMetade").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaitensMetadeId")) { - $i("i3GEOlegendaitensMetadeId").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaitensMedia")) { - $i("i3GEOlegendaitensMedia").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaitensValorClass")) { - $i("i3GEOlegendaitensValorClass").innerHTML = retorno.dados; - } - if ($i("i3GEOlegendaitensValorQuartil")) { - $i("i3GEOlegendaitensValorQuartil").innerHTML = retorno.dados; - } - }); + i3GEOF.legenda.montaCombosItens(); if (i3GEO.arvoreDeCamadas.pegaTema(i3GEOF.legenda.tema).classe && i3GEO.arvoreDeCamadas.pegaTema(i3GEOF.legenda.tema).classe .toLowerCase() == "nao") { $i("i3GEOFlegendamostra").checked = false; @@ -494,6 +491,7 @@ i3GEOF.legenda = * Função executada após ocorrer alguma alteração efetiva da legenda do mapa */ aposAlterarLegenda : function() { + i3GEO.arvoreDeCamadas.CAMADAS = []; i3GEO.atualiza(); i3GEO.Interface.atualizaTema("", i3GEOF.legenda.tema); i3GEO.arvoreDeCamadas.atualizaLegenda(i3GEOF.legenda.tema); @@ -1930,7 +1928,7 @@ i3GEOF.legenda = + "' id='i3GEOlegendamaxsize' />" + "" - + "
" + "" - + "
+ + {{{cluster}}} + + +
+
+

{{{ClusterMaxdistance}}}:

+
+ +
+
+

{{{ClusterBuffer}}}:

+
+ +
+
+

{{{ClusterFilter}}}:

+
+ +
+
+

{{{ClusterRegion}}}

+
+ +
+
+

{{{ClusterGroup}}}

+
+
+

+ +

+
+

+ +

+

  -- libgit2 0.21.2