Commit 98095dc90ca73cf5010f3ed858c2118a004da911

Authored by Edmar Moretti
1 parent 7178a511

#538

Showing 2 changed files with 50 additions and 19 deletions   Show diff stats
mashups/openlayers.php
... ... @@ -105,11 +105,11 @@ if(isset($fundo) && $fundo != ""){
105 105 $fundo = str_replace(","," ",$fundo);
106 106 $fundo = explode(" ",$fundo);
107 107 }
  108 +
108 109 //
109 110 //define quais os layers que comporão o mapa
110 111 //
111 112 if(isset($temas)){
112   - $layers = array();
113 113 $objOpenLayers = array();
114 114 }
115 115 if($temas != "")
... ... @@ -124,22 +124,43 @@ if($temas != "")
124 124 $visiveis = strtolower($visiveis);
125 125 $visiveis = explode(",",$visiveis);
126 126 }
127   - $layers = array();
128 127 $objOpenLayers = array();
129 128 if(isset($servidor) && $servidor != "../ogc.php"){
130 129 $layers = $temas;
131 130 foreach($temas as $tema){
132   - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$tema.'",transparent: "true", format: "image/png"},{isBaseLayer:false})';
  131 + $nomeLayer = str_replace(".map","",basename($tema));
  132 + $nomeLayer = str_replace(".php","",$nomeLayer);
  133 + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{isBaseLayer:false})';
133 134 }
134 135 }
135 136 else{
136 137 foreach($temas as $tema){
  138 + $nomeMap = "";
137 139 if(file_exists($locaplic."/temas/".$tema.".map")){
138   - $maptemp = @ms_newMapObj($locaplic."/temas/".$tema.".map");
139   - for($i=0;$i<($maptemp->numlayers);++$i)
140   - {
141   - $layern = $maptemp->getLayer($i);
142   - $layers[] = $layern->name;
  140 + $nomeMap = $locaplic."/temas/".$tema.".map";
  141 + }
  142 + else{
  143 + if(file_exists($tema)){
  144 + $nomeMap = $tema;
  145 + }
  146 + }
  147 + if($nomeMap != ""){
  148 + if(empty($layers)){
  149 + $layers = array();
  150 + $maptemp = @ms_newMapObj($nomeMap);
  151 + for($i=0;$i<($maptemp->numlayers);++$i) {
  152 + $layern = $maptemp->getLayer($i);
  153 + $layers[] = $layern->name;
  154 + }
  155 + $nomeLayer = implode(",",$layers);
  156 + $tituloLayer = $layern->getmetadata("tema");
  157 + }
  158 + else{
  159 + $nomeLayer = str_replace(" ",",",$layers);
  160 + $maptemp = @ms_newMapObj($nomeMap);
  161 + $temp = explode(",",$layers);
  162 + $layern = $maptemp->getLayerByName($temp[0]);
  163 + $tituloLayer = $layern->getmetadata("tema");
143 164 }
144 165 $ebase = "false";
145 166 if(isset($fundo) && in_array($tema,$fundo))
... ... @@ -147,11 +168,10 @@ if($temas != &quot;&quot;)
147 168 $visivel = "false";
148 169 if(in_array($tema,$visiveis))
149 170 {$visivel = "true";}
150   - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.($layern->getmetadata("tema")).'", "../ogc.php?tema='.$tema.'&",{layers:"'.implode(",",$layers).'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})';
  171 + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})';
151 172 }
152 173 else
153 174 {echo $tema." não foi encontrado.<br>";}
154   - $layers = array();
155 175 }
156 176 }
157 177 }
... ... @@ -162,7 +182,7 @@ Mashup OpenLayers
162 182 Parâmetros:
163 183 kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ','
164 184 servidor - por default é ../ogc.php o que força o uso do i3geo local. Esse é o programa que será utilizado em conjunto com a lista definida no parâmetro 'temas'
165   - temas - lista com os temas (mapfiles) do i3Geo que serão incluídos no mapa
  185 + temas - lista com os temas (mapfiles) do i3Geo que serão incluídos no mapa. Pode ser incluído um arquivo mapfile que esteja fora da pasta i3geo/temas. Nesse caso, deve-se definir o caminho completo do arquivo e também o parâmetro &layers
166 186 visiveis - lista de temas (mesmos nomes do parâmetro temas) que iniciarão como visíveis no mapa. Se não for definido, todos os temas serão visíveis.
167 187 numzoomlevels - número de níveis de zoom, default=6
168 188 maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax)
... ... @@ -360,7 +380,7 @@ else
360 380 echo "i3GEO.editorOL.mapext = new OpenLayers.Bounds(".$mapext.");";
361 381 }
362 382 ?>
363   -i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]})
  383 +i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]});
364 384 i3GEO.editorOL.inicia();
365 385 </script>
366 386 </body>
... ...
ogc.php
... ... @@ -35,7 +35,7 @@ lista - se for igual a &quot;temas&quot;, mostra uma lista dos temas disponíveis
35 35  
36 36 ajuda - se for definida na URL, mostra uma ajuda ao usuário
37 37  
38   -tema - nome do tema do serviço. Se for definido, o web service conterá apenas o tema.
  38 +tema - nome do tema do serviço. Se for definido, o web service conterá apenas esse tema. O tema é o nome do mapfile existente em i3geo/temas, mas pode ser especificado um mapfile existente em outra pasta. Nesse caso, deve-se especificar o caminho completo para o arquivo.
39 39  
40 40 intervalo - valor inicial e final com o número de temas que serão mostrados no serviço
41 41  
... ... @@ -52,6 +52,8 @@ ogc.php?lista=temas
52 52  
53 53 ogc.php?tema=bioma
54 54  
  55 +ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo
  56 +
55 57 ogc.php?intervalo=0,50
56 58 */
57 59 //
... ... @@ -198,7 +200,8 @@ if(!isset($tema)){
198 200 if ($tipo == "" || $tipo == "metadados")
199 201 {
200 202 $tema = explode(" ",$tema);
201   - //para o caso do tema ser um arquivo mapfile existente em uma pasta
  203 + //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
  204 + //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas
202 205 $temai3geo = true;
203 206 if(file_exists($_GET["tema"])){
204 207 $nmap = ms_newMapobj($_GET["tema"]);
... ... @@ -216,12 +219,19 @@ if ($tipo == &quot;&quot; || $tipo == &quot;metadados&quot;)
216 219 $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
217 220 $nmap->setmetadata("ows_enable_request","*");
218 221 }
219   - $ts = $nmap->getalllayernames();
  222 + if($temai3geo == false || empty($layers))
  223 + {$ts = $nmap->getalllayernames();}
  224 + else{
  225 + $ts = explode(",",str_replace(" ",",",$layers));
  226 + }
220 227 foreach ($ts as $t)
221 228 {
222 229 $l = $nmap->getlayerbyname($t);
223   - if($cache == true && strtolower($l->getmetadata("cache")) == "sim" && $tipo == "" && count($tema) == 1){
224   - carregaCacheImagem($_GET["BBOX"],$tx,$_GET["WIDTH"],$_GET["HEIGHT"],$cachedir);
  230 + //necessário pq o mapfile pode ter todos os layers como default
  231 + if($temai3geo == false)
  232 + {$l->set("status",MS_OFF);}
  233 + if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){
  234 + carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir);
225 235 }
226 236 $l->setmetadata("ows_title",pegaNome($l));
227 237 $l->setmetadata("ows_srs",$listaepsg);
... ... @@ -408,8 +418,9 @@ function ogc_imprimeAjuda()
408 418 echo "Para escolher um tema, utilize:<br>";
409 419 echo "ogc.php?lista=temas - para listar os temas disponíveis<br>";
410 420 echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>";
411   - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br><br>";
412   - echo "Utilize o sistema de administração do i3Geo para configurar quais os temas podem ser utilizados.";
  421 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br>";
  422 + echo "no lugar do código pode ser especificado também um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";
  423 + echo "Utilize o sistema de administração do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.";
413 424 echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities.";
414 425 }
415 426 function ogc_imprimeListaDeTemas()
... ...