Commit 98095dc90ca73cf5010f3ed858c2118a004da911
1 parent
7178a511
Exists in
master
and in
7 other branches
#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 != "") |
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 "temas", 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 == "" || $tipo == "metadados") |
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() | ... | ... |