Commit ba84fc025367b63e50ed4323294f78ea33685d59
1 parent
aac035bd
Exists in
master
Inclusão da opção cluster na legenda e correção na aplicação de offset em estilos
Showing
7 changed files
with
238 additions
and
28 deletions
Show diff stats
classesphp/classe_legenda.php
| ... | ... | @@ -1106,6 +1106,12 @@ class Legenda |
| 1106 | 1106 | case "width": |
| 1107 | 1107 | $estilo->set("width",$valor); |
| 1108 | 1108 | continue; |
| 1109 | + case "offsetx": | |
| 1110 | + $estilo->set("offsetx",$valor); | |
| 1111 | + continue; | |
| 1112 | + case "offsety": | |
| 1113 | + $estilo->set("offsety",$valor); | |
| 1114 | + continue; | |
| 1109 | 1115 | case "opacity": |
| 1110 | 1116 | $estilo->set("opacity",$valor); |
| 1111 | 1117 | continue; | ... | ... |
classesphp/classe_temas.php
| ... | ... | @@ -1296,5 +1296,30 @@ Adiciona LABEL em uma classe de um tema |
| 1296 | 1296 | $this->layer->setMetaData("cache",""); |
| 1297 | 1297 | } |
| 1298 | 1298 | } |
| 1299 | + function criaCluster ($group = "",$filter = "",$maxdistance=5,$region='rectangle',$buffer=0){ | |
| 1300 | + if($group != ""){ | |
| 1301 | + $group = "('[".$group."]')"; | |
| 1302 | + } | |
| 1303 | + $cluster = $this->layer->cluster; | |
| 1304 | + | |
| 1305 | + $par = "BUFFER $buffer REGION $region MAXDISTANCE $maxdistance"; | |
| 1306 | + if($group != ""){ | |
| 1307 | + $par .= " GROUP ".$group; | |
| 1308 | + } | |
| 1309 | + if($filter != ""){ | |
| 1310 | + $par .= " FILTER ".$filter; | |
| 1311 | + } | |
| 1312 | + $cluster->updateFromString("CLUSTER $par END"); | |
| 1313 | + $this->layer->setMetaData("cache",""); | |
| 1314 | + $this->layer->setMetadata("tiles","NAO"); | |
| 1315 | + $this->layer->setMetadata("cortepixels",0); | |
| 1316 | + } | |
| 1317 | + function removeCluster(){ | |
| 1318 | + $cluster = $this->layer->cluster; | |
| 1319 | + $this->layer->updatefromstring("LAYER CLUSTER END END"); | |
| 1320 | + $this->layer->setMetaData("cache",""); | |
| 1321 | + $this->layer->setMetadata("tiles","NAO"); | |
| 1322 | + $this->layer->setMetadata("cortepixels",0); | |
| 1323 | + } | |
| 1299 | 1324 | } |
| 1300 | 1325 | ?> | ... | ... |
classesphp/funcoes_gerais.php
| ... | ... | @@ -2826,7 +2826,10 @@ function restauraMapaAdmin($id_mapa,$dir_tmp){ |
| 2826 | 2826 | //verifica se existem parametros junto com o registro |
| 2827 | 2827 | $registro = explode(",",$registro); |
| 2828 | 2828 | $mapfile = $registro[0]; |
| 2829 | - $s = fwrite($baseh,base64_decode($mapfile)); | |
| 2829 | + //adapta para versoes novas do mapserver | |
| 2830 | + $mapfile = base64_decode($mapfile); | |
| 2831 | + $mapfile = str_replace("TYPE ANNOTATION","TYPE POINT",$mapfile); | |
| 2832 | + $s = fwrite($baseh,$mapfile); | |
| 2830 | 2833 | fclose($baseh); |
| 2831 | 2834 | } |
| 2832 | 2835 | $dbh = null; | ... | ... |
ferramentas/legenda/dicionario.js
| ... | ... | @@ -45,7 +45,7 @@ i3GEOF.legenda.dicionario = |
| 45 | 45 | ], |
| 46 | 46 | 'importaExportaSLD' : [ |
| 47 | 47 | { |
| 48 | - pt : "Importar/exportar SLD", | |
| 48 | + pt : "SLD", | |
| 49 | 49 | en : "", |
| 50 | 50 | es : "" |
| 51 | 51 | } |
| ... | ... | @@ -793,5 +793,54 @@ i3GEOF.legenda.dicionario = |
| 793 | 793 | en : "", |
| 794 | 794 | es : "" |
| 795 | 795 | } |
| 796 | - ] | |
| 796 | + ], | |
| 797 | + "cluster" : [ | |
| 798 | + { | |
| 799 | + pt : "Cluster", | |
| 800 | + en : "", | |
| 801 | + es : "" | |
| 802 | + } | |
| 803 | + ], | |
| 804 | + "ClusterMaxdistance" : [ | |
| 805 | + { | |
| 806 | + pt : "Distância (pixels) máxima entre os pontos que será considerada para permitir o agrupamento", | |
| 807 | + en : "", | |
| 808 | + es : "" | |
| 809 | + } | |
| 810 | + ], | |
| 811 | + "ClusterBuffer" : [ | |
| 812 | + { | |
| 813 | + 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", | |
| 814 | + en : "", | |
| 815 | + es : "" | |
| 816 | + } | |
| 817 | + ], | |
| 818 | + "ClusterFilter" : [ | |
| 819 | + { | |
| 820 | + 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)", | |
| 821 | + en : "", | |
| 822 | + es : "" | |
| 823 | + } | |
| 824 | + ], | |
| 825 | + "ClusterRegion" : [ | |
| 826 | + { | |
| 827 | + pt : "Tipo de forma que será utilizada na definição da região de busca dos pontos que formarão o agrupamento", | |
| 828 | + en : "", | |
| 829 | + es : "" | |
| 830 | + } | |
| 831 | + ], | |
| 832 | + "ClusterGroup" : [ | |
| 833 | + { | |
| 834 | + pt : "Item que será utilizado para separar os diferentes agrupamentos", | |
| 835 | + en : "", | |
| 836 | + es : "" | |
| 837 | + } | |
| 838 | + ], | |
| 839 | + "remover" : [ | |
| 840 | + { | |
| 841 | + pt : "Remover", | |
| 842 | + en : "", | |
| 843 | + es : "" | |
| 844 | + } | |
| 845 | + ] | |
| 797 | 846 | }; | ... | ... |
ferramentas/legenda/exec.php
| ... | ... | @@ -98,6 +98,25 @@ Acrescenta a contagem de elementos em cada classe. |
| 98 | 98 | if (!$r){$r = "erro.Erro legenda nao disponivel";} |
| 99 | 99 | $retorno = $r; |
| 100 | 100 | break; |
| 101 | + case "APLICARCLUSTER": | |
| 102 | + include_once(dirname(__FILE__)."/../../classesphp/classe_temas.php"); | |
| 103 | + $m = new Temas($map_file,$tema); | |
| 104 | + $l = $m->mapa->getlayerbyname($tema); | |
| 105 | + if($filter != ""){ | |
| 106 | + $filter = base64decode($filter); | |
| 107 | + } | |
| 108 | + $m->criaCluster($group,$filter,$maxdistance,$region,$buffer); | |
| 109 | + $m->salva(); | |
| 110 | + $retorno = "ok"; | |
| 111 | + break; | |
| 112 | + case "REMOVERCLUSTER": | |
| 113 | + include_once(dirname(__FILE__)."/../../classesphp/classe_temas.php"); | |
| 114 | + $m = new Temas($map_file,$tema); | |
| 115 | + $l = $m->mapa->getlayerbyname($tema); | |
| 116 | + $m->removeCluster(); | |
| 117 | + $m->salva(); | |
| 118 | + $retorno = "ok"; | |
| 119 | + break; | |
| 101 | 120 | } |
| 102 | 121 | if (!connection_aborted()){ |
| 103 | 122 | if(isset($map_file) && isset($postgis_mapa) && $map_file != "") | ... | ... |
ferramentas/legenda/index.js
| ... | ... | @@ -135,6 +135,10 @@ i3GEOF.legenda = |
| 135 | 135 | $i(iddiv).innerHTML += i3GEOF.legenda.html(); |
| 136 | 136 | i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia1", "i3GEOlegendaguia"); |
| 137 | 137 | // eventos das guias |
| 138 | + $i("i3GEOlegendaguia7").onclick = function() { | |
| 139 | + i3GEOF.legenda.ativaAplicar("none"); | |
| 140 | + i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia7", "i3GEOlegendaguia"); | |
| 141 | + }; | |
| 138 | 142 | $i("i3GEOlegendaguia6").onclick = function() { |
| 139 | 143 | i3GEOF.legenda.ativaAplicar("none"); |
| 140 | 144 | i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia6", "i3GEOlegendaguia"); |
| ... | ... | @@ -159,6 +163,21 @@ i3GEOF.legenda = |
| 159 | 163 | i3GEOF.legenda.ativaAplicar("none"); |
| 160 | 164 | i3GEO.guias.mostraGuiaFerramenta("i3GEOlegendaguia5", "i3GEOlegendaguia"); |
| 161 | 165 | }; |
| 166 | + | |
| 167 | + var b = new YAHOO.widget.Button("i3GEOlegendabotaoAplicarCluster", { | |
| 168 | + onclick : { | |
| 169 | + fn : i3GEOF.legenda.aplicarCluster | |
| 170 | + } | |
| 171 | + }); | |
| 172 | + b.addClass("rodar"); | |
| 173 | + | |
| 174 | + var b = new YAHOO.widget.Button("i3GEOlegendabotaoRemoverCluster", { | |
| 175 | + onclick : { | |
| 176 | + fn : i3GEOF.legenda.removerCluster | |
| 177 | + } | |
| 178 | + }); | |
| 179 | + b.addClass("rodar"); | |
| 180 | + | |
| 162 | 181 | var b = new YAHOO.widget.Button("i3GEOlegendabotao1", { |
| 163 | 182 | onclick : { |
| 164 | 183 | fn : i3GEOF.legenda.mudaLegenda |
| ... | ... | @@ -357,29 +376,7 @@ i3GEOF.legenda = |
| 357 | 376 | b.addClass("abrir100"); |
| 358 | 377 | i3GEOF.legenda.ativaFoco(); |
| 359 | 378 | i3GEOF.legenda.mostralegenda(); |
| 360 | - i3GEO.util.comboItens("", i3GEOF.legenda.tema, function(retorno) { | |
| 361 | - if ($i("i3GEOlegendaitensValorUnico")) { | |
| 362 | - $i("i3GEOlegendaitensValorUnico").innerHTML = retorno.dados; | |
| 363 | - } | |
| 364 | - if ($i("i3GEOlegendaClassesValorUnico")) { | |
| 365 | - $i("i3GEOlegendaClassesValorUnico").innerHTML = retorno.dados; | |
| 366 | - } | |
| 367 | - if ($i("i3GEOlegendaitensMetade")) { | |
| 368 | - $i("i3GEOlegendaitensMetade").innerHTML = retorno.dados; | |
| 369 | - } | |
| 370 | - if ($i("i3GEOlegendaitensMetadeId")) { | |
| 371 | - $i("i3GEOlegendaitensMetadeId").innerHTML = retorno.dados; | |
| 372 | - } | |
| 373 | - if ($i("i3GEOlegendaitensMedia")) { | |
| 374 | - $i("i3GEOlegendaitensMedia").innerHTML = retorno.dados; | |
| 375 | - } | |
| 376 | - if ($i("i3GEOlegendaitensValorClass")) { | |
| 377 | - $i("i3GEOlegendaitensValorClass").innerHTML = retorno.dados; | |
| 378 | - } | |
| 379 | - if ($i("i3GEOlegendaitensValorQuartil")) { | |
| 380 | - $i("i3GEOlegendaitensValorQuartil").innerHTML = retorno.dados; | |
| 381 | - } | |
| 382 | - }); | |
| 379 | + i3GEOF.legenda.montaCombosItens(); | |
| 383 | 380 | if (i3GEO.arvoreDeCamadas.pegaTema(i3GEOF.legenda.tema).classe && i3GEO.arvoreDeCamadas.pegaTema(i3GEOF.legenda.tema).classe |
| 384 | 381 | .toLowerCase() == "nao") { |
| 385 | 382 | $i("i3GEOFlegendamostra").checked = false; |
| ... | ... | @@ -494,6 +491,7 @@ i3GEOF.legenda = |
| 494 | 491 | * Função executada após ocorrer alguma alteração efetiva da legenda do mapa |
| 495 | 492 | */ |
| 496 | 493 | aposAlterarLegenda : function() { |
| 494 | + i3GEO.arvoreDeCamadas.CAMADAS = []; | |
| 497 | 495 | i3GEO.atualiza(); |
| 498 | 496 | i3GEO.Interface.atualizaTema("", i3GEOF.legenda.tema); |
| 499 | 497 | i3GEO.arvoreDeCamadas.atualizaLegenda(i3GEOF.legenda.tema); |
| ... | ... | @@ -1930,7 +1928,7 @@ i3GEOF.legenda = |
| 1930 | 1928 | + "' id='i3GEOlegendamaxsize' />" |
| 1931 | 1929 | + "</form></div>" |
| 1932 | 1930 | |
| 1933 | - + "<br><img style='float:left;' onclick='i3GEOF.legenda.aplicaTodasClasses(\"offsetx\",\"i3GEOlegendasymbolname\")' title='" | |
| 1931 | + + "<br><img style='float:left;' onclick='i3GEOF.legenda.aplicaTodasClasses(\"offsetx\",\"i3GEOlegendaoffsetx\")' title='" | |
| 1934 | 1932 | + $trad('aplicatodos', i3GEOF.legenda.dicionario) |
| 1935 | 1933 | + "' src='" |
| 1936 | 1934 | + i3GEO.configura.locaplic |
| ... | ... | @@ -1945,7 +1943,7 @@ i3GEOF.legenda = |
| 1945 | 1943 | + "' id='i3GEOlegendaoffsetx' />" |
| 1946 | 1944 | + "</form></div>" |
| 1947 | 1945 | |
| 1948 | - + "<br><img style='float:left;' onclick='i3GEOF.legenda.aplicaTodasClasses(\"offsety\",\"i3GEOlegendasymbolname\")' title='" | |
| 1946 | + + "<br><img style='float:left;' onclick='i3GEOF.legenda.aplicaTodasClasses(\"offsety\",\"i3GEOlegendaoffsety\")' title='" | |
| 1949 | 1947 | + $trad('aplicatodos', i3GEOF.legenda.dicionario) |
| 1950 | 1948 | + "' src='" |
| 1951 | 1949 | + i3GEO.configura.locaplic |
| ... | ... | @@ -2280,5 +2278,73 @@ i3GEOF.legenda = |
| 2280 | 2278 | cp.set_response_type("JSON"); |
| 2281 | 2279 | cp.call(p, "foo", temp); |
| 2282 | 2280 | }); |
| 2281 | + }, | |
| 2282 | + aplicarCluster : function(){ | |
| 2283 | + var temp = function() { | |
| 2284 | + i3GEOF.legenda.aposAlterarLegenda(); | |
| 2285 | + i3GEOF.legenda.montaCombosItens(); | |
| 2286 | + }, p, cp; | |
| 2287 | + p = | |
| 2288 | + i3GEO.configura.locaplic + "/ferramentas/legenda/exec.php?g_sid=" | |
| 2289 | + + i3GEO.configura.sid | |
| 2290 | + + "&funcao=aplicarCluster" | |
| 2291 | + + "&maxdistance=" | |
| 2292 | + + $i("i3GEOlegendaClusterMaxdistance").value | |
| 2293 | + + "&buffer=" | |
| 2294 | + + $i("i3GEOlegendaClusterBuffer").value | |
| 2295 | + + "&filter=" | |
| 2296 | + + i3GEO.util.base64encode($i("i3GEOlegendaClusterFilter").value) | |
| 2297 | + + "®ion=" | |
| 2298 | + + $i("i3GEOlegendaClusterRegion").value | |
| 2299 | + + "&group=" | |
| 2300 | + + $i("i3GEOlegendaitensCluster").getElementsByTagName("select")[0].value | |
| 2301 | + + "&tema=" | |
| 2302 | + + i3GEOF.legenda.tema; | |
| 2303 | + cp = new cpaint(); | |
| 2304 | + cp.set_response_type("JSON"); | |
| 2305 | + cp.call(p, "foo", temp); | |
| 2306 | + }, | |
| 2307 | + removerCluster : function(){ | |
| 2308 | + var temp = function() { | |
| 2309 | + i3GEOF.legenda.montaCombosItens(); | |
| 2310 | + i3GEOF.legenda.aposAlterarLegenda(); | |
| 2311 | + }, p, cp; | |
| 2312 | + p = | |
| 2313 | + i3GEO.configura.locaplic + "/ferramentas/legenda/exec.php?g_sid=" | |
| 2314 | + + i3GEO.configura.sid | |
| 2315 | + + "&funcao=removerCluster" | |
| 2316 | + + "&tema=" | |
| 2317 | + + i3GEOF.legenda.tema; | |
| 2318 | + cp = new cpaint(); | |
| 2319 | + cp.set_response_type("JSON"); | |
| 2320 | + cp.call(p, "foo", temp); | |
| 2321 | + }, | |
| 2322 | + montaCombosItens : function(){ | |
| 2323 | + i3GEO.util.comboItens("", i3GEOF.legenda.tema, function(retorno) { | |
| 2324 | + if ($i("i3GEOlegendaitensValorUnico")) { | |
| 2325 | + $i("i3GEOlegendaitensValorUnico").innerHTML = retorno.dados; | |
| 2326 | + } | |
| 2327 | + if ($i("i3GEOlegendaClassesValorUnico")) { | |
| 2328 | + $i("i3GEOlegendaClassesValorUnico").innerHTML = retorno.dados; | |
| 2329 | + } | |
| 2330 | + if ($i("i3GEOlegendaitensMetade")) { | |
| 2331 | + $i("i3GEOlegendaitensMetade").innerHTML = retorno.dados; | |
| 2332 | + } | |
| 2333 | + if ($i("i3GEOlegendaitensMetadeId")) { | |
| 2334 | + $i("i3GEOlegendaitensMetadeId").innerHTML = retorno.dados; | |
| 2335 | + } | |
| 2336 | + if ($i("i3GEOlegendaitensMedia")) { | |
| 2337 | + $i("i3GEOlegendaitensMedia").innerHTML = retorno.dados; | |
| 2338 | + } | |
| 2339 | + if ($i("i3GEOlegendaitensValorClass")) { | |
| 2340 | + $i("i3GEOlegendaitensValorClass").innerHTML = retorno.dados; | |
| 2341 | + } | |
| 2342 | + if ($i("i3GEOlegendaitensCluster")) { | |
| 2343 | + $i("i3GEOlegendaitensCluster").innerHTML = retorno.dados; | |
| 2344 | + } | |
| 2345 | + if ($i("i3GEOlegendaitensValorQuartil")) { | |
| 2346 | + $i("i3GEOlegendaitensValorQuartil").innerHTML = retorno.dados; | |
| 2347 | + } | |
| 2348 | + }); | |
| 2283 | 2349 | } |
| 2284 | 2350 | }; |
| 2285 | 2351 | \ No newline at end of file | ... | ... |
ferramentas/legenda/template_mst.html
| ... | ... | @@ -43,9 +43,51 @@ |
| 43 | 43 | </a> |
| 44 | 44 | </div> |
| 45 | 45 | </li> |
| 46 | + <li> | |
| 47 | + <div id='i3GEOlegendaguia7' style='text-align: center; left: 0px;'> | |
| 48 | + <a> | |
| 49 | + <em>{{{cluster}}}</em> | |
| 50 | + </a> | |
| 51 | + </div> | |
| 52 | + </li> | |
| 46 | 53 | </ul> |
| 47 | 54 | </div> |
| 48 | 55 | <br> |
| 56 | +<div id='i3GEOlegendaguia7obj' style='width: 99%; text-align: left;'> | |
| 57 | + <p class='paragrafo'>{{{ClusterMaxdistance}}}:</p> | |
| 58 | + <div class='i3geoForm i3geoFormIconeNumero'> | |
| 59 | + <input type='number' id='i3GEOlegendaClusterMaxdistance' value='5' /> | |
| 60 | + </div> | |
| 61 | + <br> | |
| 62 | + <p class='paragrafo'>{{{ClusterBuffer}}}:</p> | |
| 63 | + <div class='i3geoForm i3geoFormIconeNumero'> | |
| 64 | + <input type='number' id='i3GEOlegendaClusterBuffer' value='0' /> | |
| 65 | + </div> | |
| 66 | + <br> | |
| 67 | + <p class='paragrafo'>{{{ClusterFilter}}}:</p> | |
| 68 | + <div class='i3geoForm i3geoFormIconeNumero'> | |
| 69 | + <input type='text' id='i3GEOlegendaClusterFilter' value='' /> | |
| 70 | + </div> | |
| 71 | + <br> | |
| 72 | + <p class='paragrafo'>{{{ClusterRegion}}}</p> | |
| 73 | + <div class='styled-select'> | |
| 74 | + <select id='i3GEOlegendaClusterRegion'> | |
| 75 | + <option value='rectangle'>rectangle</option> | |
| 76 | + <option value='ellipse'>ellipse</option> | |
| 77 | + </select> | |
| 78 | + </div> | |
| 79 | + <br> | |
| 80 | + <p class='paragrafo'>{{{ClusterGroup}}}</p> | |
| 81 | + <div id='i3GEOlegendaitensCluster' class='styled-select'></div> | |
| 82 | + <br> | |
| 83 | + <p class='paragrafo'> | |
| 84 | + <input id='i3GEOlegendabotaoAplicarCluster' size='35' type='button' value='{{{aplicar}}}'> | |
| 85 | + </p> | |
| 86 | + <br> | |
| 87 | + <p class='paragrafo'> | |
| 88 | + <input id='i3GEOlegendabotaoRemoverCluster' size='35' type='button' value='{{{remover}}}'> | |
| 89 | + </p> | |
| 90 | +</div> | |
| 49 | 91 | <div id='i3GEOlegendaguia6obj' style='width: 99%; text-align: left;'> |
| 50 | 92 | <p class='paragrafo'> |
| 51 | 93 | | ... | ... |