From 9d2551163250643c13a6ee5aaf66c34c1372cc5a Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 23 May 2014 14:44:36 +0000 Subject: [PATCH] V6 - inclusão de rotina para corte de imagens na hora de gerar o cache. O Objetivo é evitar os efeitos de corte de símbolos nas bordas de tiles. --- classesphp/mapa_googlemaps.php | 37 +++++++++++++++++++++++++++++++++++-- classesphp/mapa_openlayers.php | 8 ++++---- temas/_llocali.map | 2 +- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/classesphp/mapa_googlemaps.php b/classesphp/mapa_googlemaps.php index 8566d47..bc5237f 100644 --- a/classesphp/mapa_googlemaps.php +++ b/classesphp/mapa_googlemaps.php @@ -152,6 +152,13 @@ if(!isset($_GET["telaR"])){ if($layerName == $_GET["layer"] || $l->group == $_GET["layer"] && $l->group != ""){ $l->set("template","none.htm"); $l->set("status",MS_DEFAULT); + // + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos + // + $cortePixels = 0; + if ($l->getmetadata("cortepixels") != ""){ + $cortePixels = $l->getmetadata("cortepixels"); + } //@TODO verificar se foi corrigido em versoes novas do mapserver //corrige um bug do mapserver que nao calcula a escala direito $l->set("maxscaledenom",$l->maxscaledenom * 100000); @@ -271,6 +278,23 @@ if($_GET["tipolayer"] != "fundo") {$o->set("transparent",MS_TRUE);} if(trim($_GET["TIPOIMAGEM"]) != "" && trim($_GET["TIPOIMAGEM"]) != "nenhum") {$o->setOption("QUANTIZE_FORCE","OFF");} + +// +//se o layer foi marcado para corte altera os parametros para ampliar o mapa +//antes de gerar a imagem +// +if($cortePixels > 0){ + //$imagemBranco = $mapa->prepareImage(); + $escalaInicial = $mapa->scaledenom; + $extensaoInicial = $mapa->extent; + + $wh = 256+($cortePixels*2); + $mapa->setsize($wh,$wh); + $ponto = new pointObj(); + $ponto->setxy(($wh/2),($wh/2)); + $mapa->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); +} + if($qy != true){ $img = $mapa->draw(); } @@ -402,7 +426,7 @@ else{ } //$cachedir e definido no ms_configura.php function salvaCacheImagem(){ - global $img,$cachedir,$x,$y,$z,$map_fileX; + global $img,$cachedir,$x,$y,$z,$map_fileX,$cortePixels; $layer = $_GET["layer"]; if($layer == "") {$layer = "fundo";} @@ -413,6 +437,15 @@ function salvaCacheImagem(){ if(!file_exists($c."/$y.png")){ mkdir($cachedir."/googlemaps/$layer/$z/$x",0777,true); $img->saveImage($c."/$y.png"); + // + //corta a imagem gerada para voltar ao tamanho normal + // + if($cortePixels > 0){ + $img = imagecreatefrompng($c."/$y.png"); + $imgc = imagecreate(256,256); + imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 ); + imagepng($imgc,$nome); + } chmod($cachedir."/googlemaps/$layer/$z/$x",0777); chmod($c."/$y.png",0777); } @@ -507,4 +540,4 @@ function versaoMS() $versao["principal"] = $v[0]; return $versao; } -?> \ No newline at end of file +?> diff --git a/classesphp/mapa_openlayers.php b/classesphp/mapa_openlayers.php index f72bcc0..f5290bd 100644 --- a/classesphp/mapa_openlayers.php +++ b/classesphp/mapa_openlayers.php @@ -90,7 +90,7 @@ if(!empty($_GET["request"])){ $_GET["REQUEST"] = $_GET["request"]; } // -//resolve o problema da seleção na versão nova do mapserver +//resolve o problema da selecao nas versoes mais recentes nova do mapserver // $qyfile = dirname($map_fileX)."/".$_GET["layer"].".php"; $qy = file_exists($qyfile); @@ -103,7 +103,7 @@ if($qy == false && $_GET["cache"] == "sim" && $_GET["DESLIGACACHE"] != "sim"){ // //map_fileX e para o caso register_globals = On no PHP.INI - +// if(isset($_GET["tipolayer"]) && $_GET["tipolayer"] == "fundo"){ $map_fileX = str_replace(".map","fundo.map",$map_fileX); } @@ -241,7 +241,7 @@ if(!isset($_GET["telaR"])){ } // -//se o layer não for do tipo fundo +//se o layer nao for do tipo fundo // if($_GET["tipolayer"] != "fundo") {$o->set("transparent",MS_TRUE);} @@ -506,4 +506,4 @@ function ilegal(){ imagepng($img); exit; } -?> \ No newline at end of file +?> diff --git a/temas/_llocali.map b/temas/_llocali.map index 330ee2b..158e7a8 100644 --- a/temas/_llocali.map +++ b/temas/_llocali.map @@ -7,7 +7,7 @@ MAP METADATA "METAESTAT_ID_MEDIDA_VARIAVEL" "" "cache" "SIM" - #"cortepixels" "50" + "cortepixels" "50" "LTEMPOITEMIMAGEM" "" "TIP" "TIPO,ANOCRIA,NOMELOC" "LTEMPOITEMDESCRICAO" "TIPO" -- libgit2 0.21.2