From fa188761b2be2d48252a93b427aaf75a26b7e182 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 13 Mar 2016 00:24:56 -0300 Subject: [PATCH] Correção na opção de inclusão de labels no editor de mapfiles, quando utilizada a opção existente na árvore do editor --- admin/dicionario/editormapfile.js | 18 +++++++++--------- admin/js/editormapfile.js | 2 +- admin/js/editormapfile_label.js | 2 ++ admin/php/editormapfile.php | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------- 4 files changed, 114 insertions(+), 41 deletions(-) diff --git a/admin/dicionario/editormapfile.js b/admin/dicionario/editormapfile.js index 345ffa4..d6994fe 100755 --- a/admin/dicionario/editormapfile.js +++ b/admin/dicionario/editormapfile.js @@ -7,7 +7,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'txtAjudaMapfile' : [ { - pt : "

Importante: a restrição ao tema por meio da definição de grupos de usuários não bloqueia o acesso por meio de download, WMS, KML, etc. Para bloquear esse tipo de acesso é necessário alterar as opções específicas. Por padrão, esses serviços são habilitados para qualquer usuário, não sendo possível bloquear apenas para determinados grupos.

Este formulário permite criar ou editar os arquivos mapfile que compõem temas no i3geo.

Os arquivo .map são armazenados no diretório i3geo/temas e podem também ser editados manualmente.

Cada arquivo contém layers definidos conforme a sintaxe utilizada pelo Mapserver. Esses arquivos são as estruturas básicas utilizadas pelo i3geo na apresentação de dados e montagem das camadas que são vistas no mapa.

Após criados os mapfiles, deve-se ainda definir as características de cada LAYER.

A lista de IPs dos usuários que podem administrar o i3geo é definida no arquivo i3geo/ms_configura.php

Apenas os mapfiles que forem vinculados a um tema poderão ser vistos na janela de inclusão de temas na árvore de temas. Se você criou um mapfile manualmente, utilize a opção de edição (ícone apresentado ao lado de cada mapfile) para fazer essa associação.

A opção 'Verifica temas sem mapfiles' possibilita resolver problemas decorrentes da eliminação manual de um arquivo mapfile do servidor. Nesses casos, o registro no banco de dados permanece. Com essa opção é possível apagar os registros ou recriar o mapfile perdido.", + pt : "

Importante: a restrição ao tema por meio da definição de grupos de usuários não bloqueia o acesso por meio de download, WMS, KML, etc. Para bloquear esse tipo de acesso é necessário alterar as opções específicas. Por padrão, esses serviços são habilitados para qualquer usuário, não sendo possível bloquear apenas para determinados grupos.

Este formulário permite criar ou editar os arquivos mapfile que compõem temas no i3geo.

Os arquivo .map são armazenados no diret�rio i3geo/temas e podem também ser editados manualmente.

Cada arquivo contém layers definidos conforme a sintaxe utilizada pelo Mapserver. Esses arquivos são as estruturas básicas utilizadas pelo i3geo na apresentação de dados e montagem das camadas que são vistas no mapa.

Ap�s criados os mapfiles, deve-se ainda definir as características de cada LAYER.

A lista de IPs dos usuários que podem administrar o i3geo é definida no arquivo i3geo/ms_configura.php

Apenas os mapfiles que forem vinculados a um tema poderão ser vistos na janela de inclusão de temas na árvore de temas. Se você criou um mapfile manualmente, utilize a opção de edição (ícone apresentado ao lado de cada mapfile) para fazer essa associação.

A opção 'Verifica temas sem mapfiles' possibilita resolver problemas decorrentes da eliminação manual de um arquivo mapfile do servidor. Nesses casos, o registro no banco de dados permanece. Com essa opção é possível apagar os registros ou recriar o mapfile perdido.", en : "", es : "" } ], @@ -167,7 +167,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'apenasShp' : [ { - pt : "Opcao disponivel apenas para o tipo shapefile", // esta sem acento pois alguns navegadores não aceitam acentuacao em alert + pt : "Opcao disponivel apenas para o tipo shapefile", // esta sem acento pois alguns navegadores n�o aceitam acentuacao em alert en : "", es : "" } ], @@ -327,7 +327,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'legendaImg' : [ { - pt : "URL de uma imagem que será utilizada em substituição à geração normal da legenda ", + pt : "URL de uma imagem que será utilizada em substituição � geração normal da legenda ", en : "", es : "" } ], @@ -1297,12 +1297,12 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'ltempoconvencode' : [ { - pt : "Aplica conversão do código de caracteres? Pode ser necessário para corrigir problemas de acentuação", + pt : "Aplica conversão do c�digo de caracteres? Pode ser necessário para corrigir problemas de acentuação", en : "", es : "" } ], 'ltempoconvencodeTitulo' : [ { - pt : "Aplica conversão do código de caracteres? Pode ser necessário para corrigir problemas de acentuação", + pt : "Aplica conversão do c�digo de caracteres? Pode ser necessário para corrigir problemas de acentuação", en : "", es : "" } ], @@ -1387,7 +1387,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'itenslink' : [ { - pt : "Lista de links que serão incluídos em cada resultado de busca da ferramenta de identificação. A lista de links deve ser separada por ',', podendo-se incluir '' para indicar que o item não tem link. Exemplo de uso para inclusão de links para o site do IBGE quando um município é clicado no mapa:
ITENS 'codigo,nome2,uf'
ITENSDESC 'codigo do IBGE,nome do município,uf'
ITENSLLINK ',http://www.ibge.gov.br/munic2001/tabelas.php?codmun=[codigo]&descricao=[nome],'
Podem ser incluídos comandos javascript, para isso utilize sempre aspas simples para fechar o link e acrescente o código javascript, exemplo:
ITENSLINK \",'../ferramentas/identifica/testelink.php?sid='+i3GEO.configura.sid\"", + pt : "Lista de links que serão incluídos em cada resultado de busca da ferramenta de identificação. A lista de links deve ser separada por ',', podendo-se incluir '' para indicar que o item não tem link. Exemplo de uso para inclusão de links para o site do IBGE quando um município é clicado no mapa:
ITENS 'codigo,nome2,uf'
ITENSDESC 'codigo do IBGE,nome do município,uf'
ITENSLLINK ',http://www.ibge.gov.br/munic2001/tabelas.php?codmun=[codigo]&descricao=[nome],'
Podem ser incluídos comandos javascript, para isso utilize sempre aspas simples para fechar o link e acrescente o c�digo javascript, exemplo:
ITENSLINK \",'../ferramentas/identifica/testelink.php?sid='+i3GEO.configura.sid\"", en : "", es : "" } ], @@ -1427,7 +1427,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'name' : [ { - pt : "Elemento 'NAME'. Não confunda com o nome que aparece no mapa ou na árvore de temas. Normalmente o código recebe o mesmo nome do arquivo mapfile, sem a extensão '.map'", + pt : "Elemento 'NAME'. Não confunda com o nome que aparece no mapa ou na árvore de temas. Normalmente o c�digo recebe o mesmo nome do arquivo mapfile, sem a extensão '.map'", en : "", es : "" } ], @@ -1496,8 +1496,8 @@ i3GEOadmin.editormapfile.dicionario = { en : "", es : "" } ], - '' : [ { - pt : "", + 'colunaLabel' : [ { + pt : "Coluna da tabela de atributos", en : "", es : "" } ], diff --git a/admin/js/editormapfile.js b/admin/js/editormapfile.js index 4e13ba5..f842e52 100755 --- a/admin/js/editormapfile.js +++ b/admin/js/editormapfile.js @@ -889,7 +889,7 @@ function salvarDadosEditor(tipo,codigoMap,codigoLayer,indiceClasse,indiceEstilo, } if(tipo == "classeLabel") { - campos = new Array("encoding","force","partials","mindistance","minfeaturesize","wrap","antialias","buffer","autoangle","angle","offsety","offsetx","position","maxsize","minsize","size","backgroundshadowsizey","backgroundshadowsizex","shadowsizey","shadowsizex","shadowcolor","outlinecolor","color","backgroundshadowcolor","backgroundcolor","type","font"); + campos = new Array("text","encoding","force","partials","mindistance","minfeaturesize","wrap","antialias","buffer","autoangle","angle","offsety","offsetx","position","maxsize","minsize","size","backgroundshadowsizey","backgroundshadowsizex","shadowsizey","shadowsizex","shadowcolor","outlinecolor","color","backgroundshadowcolor","backgroundcolor","type","font"); par = "&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&indiceClasse="+indiceClasse; prog = "../php/editormapfile.php?funcao=alterarClasseLabel" ; } diff --git a/admin/js/editormapfile_label.js b/admin/js/editormapfile_label.js index 3414c97..4df44d2 100755 --- a/admin/js/editormapfile_label.js +++ b/admin/js/editormapfile_label.js @@ -22,6 +22,8 @@ function montaEditorClasseLabel(dados) core_montaEditor(temp,"450px","500px","","Label "+dados.codigoMap,true,true,false); var param = { "linhas":[ + {ajuda:$trad("colunaLabel",i3GEOadmin.editormapfile.dicionario), + titulo:$trad("colunaLabel",i3GEOadmin.editormapfile.dicionario),id:"text",value:dados.text,tipo:"text"}, {ajuda:$trad("colorLabel",i3GEOadmin.editormapfile.dicionario), titulo:$trad("colorLabelTitulo",i3GEOadmin.editormapfile.dicionario),id:"color",value:dados.color,tipo:"cor"}, {ajuda:$trad("sizeLabel",i3GEOadmin.editormapfile.dicionario), diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 8f432cf..0a00de6 100755 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -2152,43 +2152,44 @@ function pegaClasseLabel() $layer = $mapa->getlayerbyname($codigoLayer); $classe = $layer->getclass($indiceClasse); - $v = versao(); + $v = versao(); $vi = $v["inteiro"]; - if($vi >= 60200){ - $nlabel = $classe->numlabels; + if($vi >= 60200){ + $nlabels = $classe->numlabels; if($nlabels > 0){ $label = $classe->getLabel(0); } else{ $label = ""; - } - } - else{ - $label = $classe->label; + } + } + else{ + $label = $classe->label; } if ($label != "") { $dados["font"] = $label->font; $dados["type"] = $label->type; - $dados["backgroundcolor"] = $label->backgroundcolor->red.",".$label->backgroundcolor->green.",".$label->backgroundcolor->blue; - $dados["backgroundshadowcolor"] = $label->backgroundshadowcolor->red.",".$label->backgroundshadowcolor->green.",".$label->backgroundshadowcolor->blue; + //$dados["backgroundcolor"] = $label->backgroundcolor->red.",".$label->backgroundcolor->green.",".$label->backgroundcolor->blue; + //$dados["backgroundshadowcolor"] = $label->backgroundshadowcolor->red.",".$label->backgroundshadowcolor->green.",".$label->backgroundshadowcolor->blue; $dados["color"] = $label->color->red.",".$label->color->green.",".$label->color->blue; $dados["outlinecolor"] = $label->outlinecolor->red.",".$label->outlinecolor->green.",".$label->outlinecolor->blue; $dados["shadowcolor"] = $label->shadowcolor->red.",".$label->shadowcolor->green.",".$label->shadowcolor->blue; $dados["shadowsizex"] = $label->shadowsizex; $dados["shadowsizey"] = $label->shadowsizey; - $dados["backgroundshadowsizex"] = $label->backgroundshadowsizex; - $dados["backgroundshadowsizey"] = $label->backgroundshadowsizey; + //$dados["backgroundshadowsizex"] = $label->backgroundshadowsizex; + //$dados["backgroundshadowsizey"] = $label->backgroundshadowsizey; $dados["size"] = $label->size; + $dados["minsize"] = $label->minsize; $dados["maxsize"] = $label->maxsize; $dados["position"] = $label->position; $dados["offsetx"] = $label->offsetx; $dados["offsety"] = $label->offsety; $dados["angle"] = $label->angle; - $dados["autoangle"] = $label->autoangle; + //$dados["autoangle"] = $label->autoangle; $dados["buffer"] = $label->buffer; - $dados["antialias"] = $label->antialias; + //$dados["antialias"] = $label->antialias; $dados["wrap"] = $label->wrap; $dados["minfeaturesize"] = $label->minfeaturesize; $dados["autominfeaturesize"] = $label->autominfeaturesize; @@ -2211,54 +2212,124 @@ function pegaClasseLabel() $dados["fontes"] = $nome; return $dados; } + function alterarClasseLabel() { - global $codigoMap,$codigoLayer,$indiceClasse,$locaplic,$autoangle,$encoding,$force,$partials,$mindistance,$minfeaturesize,$wrap,$antialias,$buffer,$angle,$offsety,$offsetx,$position,$maxsize,$minsize,$size,$backgroundshadowsizey,$backgroundshadowsizex,$shadowsizey,$shadowsizex,$shadowcolor,$outlinecolor,$color,$backgroundshadowcolor,$backgroundcolor,$type,$font; + global $texto,$codigoMap,$codigoLayer,$indiceClasse,$locaplic,$autoangle,$encoding,$force,$partials,$mindistance,$minfeaturesize,$wrap,$antialias,$buffer,$angle,$offsety,$offsetx,$position,$maxsize,$minsize,$size,$backgroundshadowsizey,$backgroundshadowsizex,$shadowsizey,$shadowsizex,$shadowcolor,$outlinecolor,$color,$backgroundshadowcolor,$backgroundcolor,$type,$font; + if(!isset($texto)){ + $texto = ""; + } + else{ + $texto = "[".$texto."]"; + } $dados = array(); $mapfile = $locaplic."/temas/".$codigoMap.".map"; $mapa = ms_newMapObj($mapfile); $layer = $mapa->getlayerbyname($codigoLayer); - if(strtoupper($layer->getmetadata("metaestat")) === "SIM"){ - return "erro. Layer METAESTAT"; + if(strtoupper($layer->getmetadata("metaestat")) === "SIM"){ + return "erro. Layer METAESTAT"; } $classe = $layer->getclass($indiceClasse); - $label = $classe->label; - if ($label != "") - { - $label->set("font",$font); - $label->set("type",$type); + $v = versao(); + $vi = $v["inteiro"]; + + if($texto == ""){ + if($vi >= 60300){ + $indiceLabel = $classe->addLabel(new labelObj()); + $label = $classe->getLabel($indiceLabel); + } + else{ + $label = $classe->label; + } + } + elseif ($vi >= 60300 && $classe->numlabels == 0){ + if($wrap != ""){ + $s = "CLASS LABEL WRAP '$wrap' TEXT '".$texto."' END END"; + $classe->updateFromString($s); + } + else{ + $s = "CLASS LABEL TEXT '".$texto."' END END"; + $classe->updateFromString($s); + } + } + + if($vi >= 60300){ + $label = $classe->getLabel(0); + } + else{ + $label = $classe->label; + } + + if($wrap != ""){ + $label->set("maxlength",1); + } + if($fonte != "bitmap"){ + //para funcionar na versao 7 do mapserver + $label->updateFromString("LABEL type truetype END"); + $label->set("font",$fonte); + $label->set("size",$tamanho); + } + else{ + //para funcionar na versao 7 do mapserver + $label->updateFromString("LABEL type bitmap END"); + $t = MS_TINY; + if ($tamanho > 5 ){ + $t = MS_TINY; + } + if ($tamanho >= 7 ){ + $t = MS_SMALL; + } + if ($tamanho >= 10 ){ + $t = MS_MEDIUM; + } + if ($tamanho >= 12 ){ + $t = MS_LARGE; + } + if ($tamanho >= 14 ){ + $t = MS_GIANT; + } + $label->set("size",$t); + } + if ($label != ""){ + //$label->set("type",$type); corE($label,$backgroundcolor,"backgroundcolor"); corE($label,$backgroundshadowcolor,"backgroundshadowcolor"); corE($label,$color,"color"); corE($label,$outlinecolor,"outlinecolor"); - corE($label,$shadowcolor,"shadowcolor"); + if(!empty($sombra) && !empty($backgroundshadowsizex)){ + corE($label,$sombra,"backgroundshadowcolor",$backgroundshadowsizex,$backgroundshadowsizey); + } $label->set("shadowsizex",$shadowsizex); $label->set("shadowsizey",$shadowsizey); - $label->set("backgroundshadowsizex",$backgroundshadowsizex); - $label->set("backgroundshadowsizey",$backgroundshadowsizey); - $label->set("size",$size); + //$label->set("backgroundshadowsizex",$backgroundshadowsizex); + //$label->set("backgroundshadowsizey",$backgroundshadowsizey); + $label->set("minsize",$minsize); $label->set("maxsize",$maxsize); - $label->set("position",$position); + //$label->set("position",$position); + $label->set("offsetx",$offsetx); $label->set("offsety",$offsety); $label->set("angle",$angle); - $label->set("autoangle",$autoangle); - $label->set("buffer",$buffer); - $label->set("antialias",$antialias); + + //$label->set("autoangle",$autoangle); + //$label->set("buffer",$buffer); + //$label->set("antialias",$antialias); $label->set("wrap",$wrap); $label->set("minfeaturesize",$minfeaturesize); - //$label->set("autominfeaturesize",$autominfeaturesize); $label->set("mindistance",$mindistance); $label->set("partials",$partials); $label->set("force",$force); $label->set("encoding",$encoding); - $label->set("autoangle",$autoangle); + + $p = array("MS_AUTO"=>MS_AUTO,"MS_UL"=>MS_UL,"MS_LR"=>MS_LR,"MS_UR"=>MS_UR,"MS_LL"=>MS_LL,"MS_CR"=>MS_CR,"MS_CL"=>MS_CL,"MS_UC"=>MS_UC,"MS_LC"=>MS_LC,"MS_CC"=>MS_CC); + $label->set("position",$p[$position]); } $mapa->save($mapfile); removeCabecalho($mapfile); return "ok"; } + function pegaEstilo() { global $codigoMap,$codigoLayer,$indiceClasse,$indiceEstilo,$locaplic; -- libgit2 0.21.2