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