Commit 8d154fcd481f4d3091ea0af12c4e7ac8f2ad2494

Authored by Edmar Moretti
1 parent 99a23c5f
Exists in master

Correção na geração de serviços kml, kmz e datadownload

classesphp/mapa_controle.php
... ... @@ -119,7 +119,7 @@ $interfaceTemp = $interface;
119 119 //TEMA2SLD e usado por datadownload.htm
120 120 //PEGAMAPAS e utilizado em varias funcoes
121 121 //
122   -if ($funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){
  122 +if ($funcao != "download3" && $funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){
123 123 session_name("i3GeoPHP");
124 124 if (isset($g_sid) && $g_sid != "")
125 125 {
... ...
ogc.php
... ... @@ -175,10 +175,10 @@ if(!file_exists($tema)){
175 175  
176 176 $layers = $tema;
177 177 //ajusta o OUTPUTFORMAT
178   -if(strpos(strtolower($OUTPUTFORMAT),"kml") === true || strpos(strtolower($OUTPUTFORMAT),"kml") === 0){
  178 +if(strpos(strtolower($OUTPUTFORMAT),"kml") !== false){
179 179 $OUTPUTFORMAT = "kml";
180 180 }
181   -if(strpos(strtolower($OUTPUTFORMAT),"kmz") === true || strpos(strtolower($OUTPUTFORMAT),"kmz") === 0){
  181 +if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){
182 182 $OUTPUTFORMAT = "kmz";
183 183 }
184 184 //
... ... @@ -191,11 +191,29 @@ if(!empty($OUTPUTFORMAT)){
191 191 //para o caso da requisicao kmz
192 192 //kmz nao funciona diretamente com mapserver
193 193 //
194   -if(strtolower($OUTPUTFORMAT) == "xkml" || strtolower($OUTPUTFORMAT) == "kmz"){
  194 +if(strtolower($OUTPUTFORMAT) == "kmz"){
195 195 $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
196 196 header("Location:".$urln);
197 197 exit;
198 198 }
  199 +if(strtolower($OUTPUTFORMAT) == "kml" && $ogrOutput == false){
  200 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
  201 + header("Location:".$urln);
  202 + exit;
  203 +}
  204 +//
  205 +//caso seja uma requisição WMS com format
  206 +//
  207 +if(strpos(strtolower($format),"kml") !== false){
  208 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  209 + header("Location:".$urln);
  210 + exit;
  211 +}
  212 +if(strpos(strtolower($format),"kmz") !== false){
  213 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  214 + header("Location:".$urln);
  215 + exit;
  216 +}
199 217 //
200 218 //usa o epsg correto ao inves do apelido inventado pelo Google
201 219 //
... ...
pacotes/kmlmapserver/classes/layerserver.class.php
... ... @@ -143,32 +143,38 @@ class LayerServer {
143 143 function run(){
144 144 // Check cache
145 145 if(ENABLE_CACHE){
146   - $cache_file = $this->get_cache_file_name();
147   - if(file_exists($cache_file)){
148   - $this->send_header();
149   - readfile($cache_file);
150   - exit;
151   - }
  146 + $cache_file = $this->get_cache_file_name();
  147 + if(file_exists($cache_file)){
  148 + $this->send_header();
  149 + readfile($cache_file);
  150 + exit;
  151 + }
152 152 }
153 153 // If not layer are requested, send all as networklinks
154 154 if(!$this->typename){
155   - $this->_networklink = true;
156   - $this->typename = $this->get_layer_list();
  155 + $this->_networklink = true;
  156 + $this->typename = $this->get_layer_list();
157 157 } else {
158   - $this->_networklink = false;
  158 + $this->_networklink = false;
159 159 }
160   - //ajusta a legenda
161   - $numlayers = $this->map_object->numlayers;
162   - for ($i=0;$i < $numlayers;++$i){
163   - $layer = $this->map_object->getlayer($i);
164   - if (($layer->data != "") && (strtoupper($layer->getmetadata("escondido")) != "SIM") && (strtoupper($layer->getmetadata("tema")) != "NAO")){
165   - if ($layer->numclasses > 0){
166   - $classe = $layer->getclass(0);
167   - if (($classe->name == "") || ($classe->name == " ")){
168   - $classe->set("name",$layer->getmetadata("tema"));
169   - }
170   - //corrige o titulo da legenda
171   - if($layer->type != 3 && $layer->type != 4){
  160 + if($this->_networklink == false){
  161 + //desliga todos os layers
  162 + for($i = 0; $i < $this->map_object->numlayers; $i++){
  163 + $l = $this->map_object->getLayer($i);
  164 + $l->set("status",MS_OFF);
  165 + }
  166 + //ajusta a legenda
  167 + $nomesl = explode(',', $this->typename);
  168 + foreach ($nomesl as $nomel){
  169 + $layer = $this->map_object->getlayerbyname($nomel);
  170 + if($layer){
  171 + $layer->set("status",MS_DEFAULT);
  172 + if ($layer->numclasses > 0){
  173 + $classe = $layer->getclass(0);
  174 + if (($classe->name == "") || ($classe->name == " ")){
  175 + $classe->set("name",$layer->getmetadata("tema"));
  176 + }
  177 + //corrige o titulo da legenda
172 178 $nclass = $layer->numclasses;
173 179 for($j=0;$j<$nclass;$j++){
174 180 $classe = $layer->getclass($j);
... ... @@ -193,8 +199,12 @@ class LayerServer {
193 199 . " <screenXY x='0.01' y='0.14' xunits='fraction' yunits='fraction'/>" . PHP_EOL
194 200 . " <size x='-1' y='-1' xunits='pixels' yunits='pixels'/>" . PHP_EOL
195 201 . " </ScreenOverlay>" . PHP_EOL;
196   -
197   - $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document >'.$legenda.'</Document></kml>');
  202 + if($this->_networklink == false){
  203 + $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document >'.$legenda.'</Document></kml>');
  204 + }
  205 + else{
  206 + $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document ></Document></kml>');
  207 + }
198 208 // Prepare projection
199 209 $this->in_proj = ms_newProjectionObj($this->map_object->getProjection());
200 210 // Set projection to GOOGLE earth's projection
... ...