From 79208fce176805d9fd203d2f583b0f37cd5ba91d Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 21 Sep 2017 16:03:02 -0300 Subject: [PATCH] Modificação do mashup openlayers OSM --- mashups/openlayers.php | 3 ++- mashups/osm.php | 1958 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mashups/osm_depreciado.php | 835 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2028 insertions(+), 768 deletions(-) create mode 100755 mashups/osm_depreciado.php diff --git a/mashups/openlayers.php b/mashups/openlayers.php index 56bb30e..c3c60bc 100755 --- a/mashups/openlayers.php +++ b/mashups/openlayers.php @@ -15,6 +15,7 @@ if(count($parurl) == 0){ ajuda(); exit; } + if (isset($parurl["opacidade"])) { $opacidade = $parurl["opacidade"] * 1; } else { @@ -1122,7 +1123,7 @@ function ajuda() //$('.iconeGuiaMovel').tooltip('show'); $("#i3GEOguiaMovelConteudo").mCustomScrollbar({scrollbarPosition: "outside",theme:"inset-2-dark"}); adicionaBotoesEditor(); - $i("openlayers").style.backgroundColor = "rgb(255,255,255)"; + $i("openlayers").style.backgroundColor = "rgb(245,245,245)"; }, //parametros de configuracao de diferentes componentes do mapa, como o catalogo de temas, balao de info, etc components : { diff --git a/mashups/osm.php b/mashups/osm.php index 858d438..c9a5c26 100755 --- a/mashups/osm.php +++ b/mashups/osm.php @@ -1,527 +1,368 @@ -jeto web; - $w->set("imagepath",dirname($w->imagepath)."/"); - $w->set("imageurl",dirname($w->imageurl)."/"); - // apaga algumas camadas - $l = $m->getlayerbyname("rosadosventos"); - if($l != ""){ - $l->set("status",MS_DELETE); - } - $l = $m->getlayerbyname("copyright"); - if($l != ""){ - $l->set("status",MS_DELETE); - } - $m->save($xbase); - $temas = $xbase; - if (!isset($mapext)){ - $mapext = $m->extent->minx." ".$m->extent->miny." ".$m->extent->maxx." ".$m->extent->maxy; - } -} -if(!isset($mapext)){ - $versao = versao(); - $versao = $versao["principal"]; - if(isset($base) && $base != ""){ - if(file_exists($base)){ - $f = $base; - } - else{ - $f = $locaplic."/aplicmap/".$base.".map"; - } - } - else - { - $f = ""; - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ - $f = $locaplic."/aplicmap/geral1windowsv".$versao.".map"; - } - else{ - if($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){ - $f = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map"; - } - if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ - $f = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map"; - } - if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ - $f = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map"; - } - if($f == "") - { - $f = $locaplic."/aplicmap/geral1v".$versao.".map"; - } - } - } - if(@ms_newMapObj($f)){ - $mapae = ms_newMapObj($f); - $c = $mapae->extent; - $mapext = $c->minx.",".$c->miny.",".$c->maxx.",".$c->maxy; - } +if (isset($parurl["restauramapa"])) { + $restauramapa = $parurl["restauramapa"] * 1; +} else { + $restauramapa = "''"; } -// -// imprime na tela a ajuda ao usuário -// -if(!isset($temas) && isset($layers)){ - $temas = $layers; +if (isset($parurl["mapext"])) { + $mapext = str_replace(" ", ",", $parurl["mapext"]); + $mapext = "[$mapext]"; +} else { + $mapext = "[]"; +} +if (! isset($parurl["temas"]) && isset($parurl["layers"])) { + $parurl["temas"] = $parurl["layers"]; } -if(!isset($temas)){ - ajuda(); +$temas = explode(",", str_replace(" ", ",", $parurl["temas"])); +if(!isset($parurl["visiveis"])){ + $parurl["visiveis"] = $parurl["temas"]; } -// problema na versão 211 do OpenLayers. Tamanho em % não é -// aceito -// if(!isset($largura)) - // {$largura = 500;} -if(isset($largura) && !isset($altura)){ - $altura = $largura; +$visiveis = explode(",", str_replace(" ", ",", $parurl["visiveis"])); +$off = array_diff($temas, $visiveis); +//filtros +$filtros = array(); +foreach($temas as $tema){ + if(isset($parurl["map_layer_".$tema."_filter"])){ + $filtros[] = array( + "layer"=>$tema, + "expression"=>$parurl["map_layer_".$tema."_filter"] + ); + } } -if(isset($altura) && !isset($largura)){ - $largura = $altura; +$filtros = json_encode($filtros); + +$estilo = ""; +if (isset($parurl["altura"])) { + $estilo .= ";height:" . $parurl["altura"] . "px"; +} +if (isset($parurl["largura"])) { + $estilo .= ";width:" . $parurl["largura"] . "px"; } +$controles = $parurl["controles"]; // // define quais controles serão mostrados no mapa // -$objControles = array(); -if(isset($controles)){ - $controles = str_replace(" ",",",$controles); - $controles = strtolower($controles); - $controles = explode(",",$controles); - if(in_array("navigation",$controles)){ - $objControles[] = "new OpenLayers.Control.Navigation()"; - } - if(in_array("panzoombar",$controles)){ - $objControles[] = "new OpenLayers.Control.PanZoomBar()"; - } - if(in_array("layerswitcher",$controles)){ - $objControles[] = "new OpenLayers.Control.LayerSwitcher({'ascending':false})"; - } - if(in_array("scaleline",$controles)){ - $objControles[] = "new OpenLayers.Control.ScaleLine()"; - } - if(in_array("mouseposition",$controles)) - { - $objControles[] = "new OpenLayers.Control.MousePosition({'separator':' '})"; - } - if(in_array("overviewmap",$controles)){ - $objControles[] = "new OpenLayers.Control.OverviewMap()"; - } - if(in_array("keyboarddefaults",$controles)){ - $objControles[] = "new OpenLayers.Control.KeyboardDefaults()"; - } +$objControles = array( + "new ol.control.Attribution({collapsible: true})" +); +if (isset($controles)) { + $controles = str_replace(" ", ",", $controles); + $controles = strtolower($controles); + $controles = explode(",", $controles); + if (in_array("navigation", $controles)) { + $objControles[] = "new ol.control.Zoom()"; + } + if (in_array("panzoombar", $controles)) { + $objControles[] = "new ol.control.ZoomSlider()"; + } + if (in_array("scaleline", $controles)) { + $objControles[] = "new ol.control.ScaleLine()"; + } + if (in_array("mouseposition", $controles)) { + $objControles[] = "new ol.control.MousePosition({coordinateFormat : function(c){return ol.coordinate.toStringHDMS(c);}})"; + } + if (in_array("overviewmap", $controles)) { + $objControles[] = "new ol.control.OverviewMap()"; + } +} else { + $objControles[] = "new ol.control.Zoom()"; + $objControles[] = "new ol.control.ZoomSlider()"; + $objControles[] = "new ol.control.ScaleLine()"; + $objControles[] = "new ol.control.MousePosition({coordinateFormat : function(c){return ol.coordinate.toStringHDMS(c);}})"; } +$botoes = $parurl["botoes"]; // // define quais botoes serão mostrados no mapa // $objBotoes = array(); -if(isset($botoes)){ - $botoes = str_replace(" ",",",$botoes); - $botoes = strtolower($botoes); - $botoes = explode(",",$botoes); - if(in_array("grid",$botoes)){ - $objBotoes[] = "'grid':true"; - } - if(in_array("imprimir",$botoes)){ - $objBotoes[] = "'imprimir':true"; - } - if(in_array("pan",$botoes)){ - $objBotoes[] = "'pan':true"; - } - if(in_array("zoombox",$botoes)){ - $objBotoes[] = "'zoombox':true"; - } - if(in_array("zoomtot",$botoes)){ - $objBotoes[] = "'zoomtot':true"; - } - if(in_array("zoomout",$botoes)){ - $objBotoes[] = "'zoomout':true"; - } - if(in_array("zoomin",$botoes)) - { - $objBotoes[] = "'zoomin':true"; - } - if(in_array("legenda",$botoes)){ - $objBotoes[] = "'legenda':true"; - } - if(in_array("distancia",$botoes)){ - $objBotoes[] = "'distancia':true"; - } - if(in_array("area",$botoes)){ - $objBotoes[] = "'area':true"; - } - if(in_array("identifica",$botoes)){ - $objBotoes[] = "'identifica':true"; - } - if(in_array("linha",$botoes)){ - $objBotoes[] = "'linha':true"; - } - if(in_array("ponto",$botoes)){ - $objBotoes[] = "'ponto':true"; - } - if(in_array("poligono",$botoes)){ - $objBotoes[] = "'poligono':true"; - } - if(in_array("edita",$botoes)){ - $objBotoes[] = "'edita':true"; - } - if(in_array("listag",$botoes)){ - $objBotoes[] = "'listag':true"; - } - if(in_array("corta",$botoes)){ - $objBotoes[] = "'corta':true"; - } - if(in_array("apaga",$botoes)){ - $objBotoes[] = "'apaga':true"; - } - if(in_array("procura",$botoes)){ - $objBotoes[] = "'procura':true"; - } - if(in_array("salva",$botoes)){ - $objBotoes[] = "'salva':true"; - } - if(in_array("ajuda",$botoes)){ - $objBotoes[] = "'ajuda':true"; - } - if(in_array("fecha",$botoes)){ - $objBotoes[] = "'fecha':true"; - } - if(in_array("tools",$botoes)){ - $objBotoes[] = "'tools':true"; - } - if(in_array("undo",$botoes)){ - $objBotoes[] = "'undo':true"; - } - if(in_array("propriedades",$botoes)){ - $objBotoes[] = "'propriedades':true"; - } - if(in_array("frente",$botoes)){ - $objBotoes[] = "'frente':true"; - } - if(in_array("texto",$botoes)){ - $objBotoes[] = "'texto':true"; - } - if(in_array("novaaba",$botoes)){ - $objBotoes[] = "'novaaba':true"; - } - $botoes = "{".implode(",",$objBotoes)."}"; -} +$objBotoesHtml = array(); +if (isset($botoes)) { + $botoes = str_replace(" ", ",", $botoes); + $botoes = strtolower($botoes); + $botoes = explode(",", $botoes); + if (in_array("imprimir", $botoes)) { + $objBotoes[] = "'imprimir':true"; + } + if (in_array("pan", $botoes)) { + $objBotoes[] = "'pan':true"; + } + $objBotoesHtml["zoombox"] = "hidden"; + if (in_array("zoombox", $botoes)) { + // usa bootstrap + $objBotoes[] = "'zoombox':false"; + $objBotoesHtml["zoombox"] = ""; + } + $objBotoesHtml["analise"] = "hidden"; + if (in_array("analise", $botoes)) { + // usa bootstrap + $objBotoesHtml["analise"] = ""; + } + $objBotoesHtml["camadas"] = "hidden"; + if (in_array("camadas", $botoes)) { + // usa bootstrap + $objBotoesHtml["camadas"] = ""; + } + $objBotoesHtml["catalogo"] = "hidden"; + if (in_array("catalogo", $botoes)) { + // usa bootstrap + $objBotoesHtml["catalogo"] = ""; + } + $objBotoesHtml["legenda"] = "hidden"; + if (in_array("legenda", $botoes)) { + // usa bootstrap + $objBotoes[] = "'legenda':false"; + $objBotoesHtml["legenda"] = ""; + } + $objBotoesHtml["procura"] = "hidden"; + if (in_array("procura", $botoes)) { + // usa bootstrap + $objBotoes[] = "'procura':false"; + $objBotoesHtml["procura"] = ""; + } + $objBotoesHtml["identifica"] = "hidden"; + if (in_array("identifica", $botoes)) { + // usa bootstrap + $objBotoes[] = "'identifica':false"; + $objBotoesHtml["identifica"] = ""; + } + $objBotoesHtml["zoomtot"] = "hidden"; + if (in_array("zoomtot", $botoes)) { + // usa bootstrap + $objBotoes[] = "'zoomtot':false"; + $objBotoesHtml["zoomtot"] = ""; + } + $objBotoesHtml["zoomanterior"] = "hidden"; + if (in_array("zoomanterior", $botoes)) { + // usa bootstrap + $objBotoesHtml["zoomanterior"] = ""; + } + $objBotoesHtml["zoomproximo"] = "hidden"; + if (in_array("zoomproximo", $botoes)) { + // usa bootstrap + $objBotoesHtml["zoomproximo"] = ""; + } + $objBotoesHtml["grid"] = "hidden"; + if (in_array("grid", $botoes)) { + // usa bootstrap + $objBotoes[] = "'grid':false"; + $objBotoesHtml["grid"] = ""; + } + $objBotoesHtml["marcador"] = "hidden"; + if (in_array("marcador", $botoes)) { + // usa bootstrap + $objBotoesHtml["marcador"] = ""; + } + if (in_array("zoomout", $botoes)) { + $objBotoes[] = "'zoomout':true"; + } + if (in_array("zoomin", $botoes)) { + $objBotoes[] = "'zoomin':true"; + } + if (in_array("distancia", $botoes)) { + $objBotoes[] = "'distancia':true"; + } + if (in_array("area", $botoes)) { + $objBotoes[] = "'area':true"; + } + if (in_array("linha", $botoes)) { + $objBotoes[] = "'linha':true"; + } + if (in_array("ponto", $botoes)) { + $objBotoes[] = "'ponto':true"; + } + if (in_array("poligono", $botoes)) { + $objBotoes[] = "'poligono':true"; + } + if (in_array("edita", $botoes)) { + $objBotoes[] = "'edita':true"; + } + if (in_array("listag", $botoes)) { + $objBotoes[] = "'listag':true"; + } + if (in_array("corta", $botoes)) { + $objBotoes[] = "'corta':true"; + } + if (in_array("apaga", $botoes)) { + $objBotoes[] = "'apaga':true"; + } + if (in_array("salva", $botoes)) { + $objBotoes[] = "'salva':true"; + } + if (in_array("ajuda", $botoes)) { + $objBotoes[] = "'ajuda':true"; + } + if (in_array("fecha", $botoes)) { + $objBotoes[] = "'fecha':true"; + } + if (in_array("tools", $botoes)) { + $objBotoes[] = "'tools':true"; + } + if (in_array("undo", $botoes)) { + $objBotoes[] = "'undo':true"; + } + if (in_array("propriedades", $botoes)) { + $objBotoes[] = "'propriedades':true"; + } + if (in_array("frente", $botoes)) { + $objBotoes[] = "'frente':true"; + } + if (in_array("texto", $botoes)) { + $objBotoes[] = "'texto':true"; + } + if (in_array("novaaba", $botoes)) { + $objBotoes[] = "'novaaba':true"; + } + $botoes = "{" . implode(",", $objBotoes) . "}"; +} else { + $objBotoes[] = "'imprimir':true"; + $objBotoesHtml["zoombox"] = ""; + $objBotoesHtml["analise"] = ""; + $objBotoesHtml["camadas"] = ""; + $objBotoesHtml["catalogo"] = ""; + $objBotoesHtml["legenda"] = ""; + $objBotoesHtml["procura"] = ""; + $objBotoesHtml["identifica"] = ""; + $objBotoesHtml["zoomtot"] = ""; + $objBotoesHtml["zoomanterior"] = ""; + $objBotoesHtml["zoomproximo"] = ""; + $objBotoesHtml["grid"] = ""; + $objBotoesHtml["marcador"] = ""; + $objBotoes[] = "'distancia':true"; + $objBotoes[] = "'area':true"; + $objBotoes[] = "'linha':true"; + $objBotoes[] = "'ponto':true"; + $objBotoes[] = "'poligono':true"; + $objBotoes[] = "'edita':true"; + $objBotoes[] = "'listag':true"; + $objBotoes[] = "'corta':true"; + $objBotoes[] = "'apaga':true"; + $objBotoes[] = "'salva':true"; + $objBotoes[] = "'tools':true"; + $objBotoes[] = "'undo':true"; + $objBotoes[] = "'propriedades':true"; + $objBotoes[] = "'frente':true"; + + $botoes = "{" . implode(",", $objBotoes) . "}"; -// -// define a lista de layers do tipo baselayers -// $fundo é um array com a lista dos nomes possíveis ou passados -// pela url -// cada um deve ser definido em openlayers.js.php -// -if(isset($fundo) && $fundo != ""){ - $fundo = str_replace(","," ",$fundo); - $fundo = explode(" ",$fundo); } -// -// define quais os layers que comporão o mapa -// -//$objOpenLayers guarda a string javascript que sera usada para criar os objetos -//layer do OpenLayers -if(isset($temas)){ - $objOpenLayers = array(); -} -if($temas != ""){ - $temas = str_replace(" ",",",$temas); - // $temas = strtolower($temas); - $temas = explode(",",$temas); - if(!isset($visiveis)){ - $visiveis = $temas; - } - else{ - $visiveis = str_replace(" ",",",$visiveis); - $visiveis = explode(",",$visiveis); - } - $objOpenLayers = array(); - if(!isset($servidor)){ - $servidor = "../ogc.php"; - } - // - //lista de ferramentas - //lista os nomes de metadados que contem os parametros das - //ferramentas customizaveis e que seraco incluidas na propriedade do layer - // - $listaFerramentas = array("tme","storymap","animagif"); - $dadosTemas = pegaDadosAdminKey("SELECT codigo_tema,link_tema FROM __esq__i3geoadmin_temas WHERE codigo_tema IN('".implode($temas,',')."')","__esq__"); - foreach($temas as $tema){ - // - //utilzado para obter os parametros de ferramentas especificas indicadas nos metadados do LAYER - // - $ferramentas = array(); - if(file_exists($locaplic."/temas/".$tema.".gvp")){ - include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); - $gm = new gvsig2mapfile($locaplic."/temas/".$tema.".gvp"); - $gvsigview = $gm->getViewsNames(); - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$gvsigview[0].'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{layers:"'.$tema.'",transparent: "true", format: "image/png"},{singleTile:false,visibility:true,isBaseLayer:false, ferramentas :'.$ferramentas.')'; - } - else{ - $nomeMap = ""; - if(file_exists($locaplic."/temas/".$tema.".map")){ - $nomeMap = $locaplic."/temas/".$tema.".map"; - } - else{ - if(file_exists($tema)){ - $nomeMap = $tema; - } - else{ - // acontece caso o mapfile tenha sido gerado na pasta - // temporaria por algum sistema - if(file_exists($dir_tmp."/".$tema.".map")){ - $nomeMap = $dir_tmp."/".$tema.".map"; - } - } - } - if($nomeMap != ""){ - $layersNomes = array(); - $layers = array(); - $maptemp = @ms_newMapObj($nomeMap); - if($maptemp){ - $nlayers = $maptemp->numlayers; - for($i=0;$i<($nlayers);++$i) { - $layern = $maptemp->getLayer($i); - // - //verifica se o layer contem ferramentas parametrizadas - // - foreach($listaFerramentas as $lf){ - $meta = $layern->getmetadata($lf); - if($meta != ""){ - $ferramentas[] = "'".$lf."':".$meta; - } - } - $ferramentas = '{'.implode(",",$ferramentas).'}'; - if($layern->getmetadata("PLUGINI3GEO") != ""){ - //obtem os dados necessarios para iniciar o plugin - //os objetos layer (openLayers) sao criados apenas no final - //do processo, pois necessitam usar javascript e nao apenas PHP - $temasPluginI3Geo[] = array( - "name"=>$layern->name, - "tema"=>$layern->getmetadata("tema"), - "plugin"=>$layern->getmetadata("PLUGINI3GEO"), - "cache"=>strtoupper($layern->getmetadata("cache")), - "transitioneffect"=>strtoupper($layern->getmetadata("transitioneffect")), - "tiles"=>strtoupper($layern->getmetadata("tiles")), - "posicaoLayer"=>count($objOpenLayers), - "ferramentas"=>$ferramentas - ); - $objOpenLayers[] = ""; - } - else{ - $layersNomes[] = $layern->name; - $layers[] = $layern; - } - } - $nomeLayer = implode(",",$layersNomes); - $tituloLayer = $layern->getmetadata("tema"); - $ebase = "false"; - if(isset($fundo) && $fundo != ""){ - if(in_array($tema,$fundo)){ - $ebase = "true"; - } - } - $visivel = "false"; - if(in_array($tema,$visiveis)){ - $visivel = "true"; - } - if(strtolower($DESLIGACACHE) != "sim" && $nlayers == 1 && strtoupper($layern->getmetadata("cache")) == "SIM" && $layern->getmetadata("PLUGINI3GEO") == ""){ - // - //obtem a fonte - // - $link_tema = $dadosTemas[$layern->name]; - $link_tema = $link_tema["link_tema"]; - if($layern->type != 2 && $layern->type != 3){ - $opacidade = 1; - } - // - //verifica se deve aplicar filtro - // - $filtro = $_GET["map_layer_".$layern->name."_filter"]; - if(!empty($filtro)){ - $DESLIGACACHE = "sim"; - $nocache = "map_layer_".$layern->name."_filter=".$filtro."&".$nocache; - } - $teffect = 'transitionEffect: "resize",'; - if(strtoupper($layern->getmetadata("transitioneffect")) == "NAO"){ - $teffect = 'transitionEffect: null,'; - } - // nesse caso o layer e adicionado como TMS - // tms leva os parametros do TMS - //$objOpenLayers[] = 'new OpenLayers.Layer.TMS("'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'",{'.$teffect.' tileOrigin: new OpenLayers.LonLat(-180, -90),opacity:'.$opacidade.',serviceVersion:"&tms=",visibility:'.$visivel.',isBaseLayer:'.$ebase.',layername:"'.$nomeLayer.'",type:"png", ferramentas :'.$ferramentas.'})'; - $objOpenLayers[] = 'new OpenLayers.Layer.OSM("'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&Z=${z}&X=${x}&Y=${y}",{'.$teffect.' tileOrigin: new OpenLayers.LonLat(-180, -90),opacity:'.$opacidade.',serviceVersion:"&tms=",visibility:'.$visivel.',isBaseLayer:'.$ebase.',layername:"'.$nomeLayer.'",type:"png", ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; +if (isset($parurl["kml"])) { + $kml = $parurl["kml"]; + $kml = str_replace(" ", ",", $kml); + $kml = explode(",", $kml); + $kml = "'" . implode("','", $kml) . "'"; +} else { + $kml = ""; +} +if (isset($parurl["DESLIGACACHE"])) { + $DESLIGACACHE = $parurl["DESLIGACACHE"]; +} else { + $DESLIGACACHE = ""; +} +if (isset($parurl["numzoomlevels"])) { + $numzoomlevels = $parurl["numzoomlevels"]; +} else { + $numzoomlevels = 20; +} +if (isset($parurl["maxextent"])) { + $maxextent = "[" . $parurl["maxextent"] . "]"; +} else { + $maxextent = "undefined"; +} +if (isset($parurl["pontos"])) { + $pontos = str_replace(" ", ",", $parurl["pontos"]); +} else { + $pontos = ""; +} +if(isset($parurl["marca"])){ + $marca = $parurl["marca"]; +} else { + $marca = "../pacotes/openlayers/img/marker-gold.png"; +} +if(isset($parurl["tiles"])){ + $tiles = $parurl["tiles"]; +} +else{ + $tiles = "true"; +} +if(isset($parurl["ativarodadomouse"]) && $parurl["ativarodadomouse"] == "false"){ + $ativarodadomouse = ""; +} +else{ + $ativarodadomouse = "new ol.interaction.MouseWheelZoom(),"; +} +$legendahtml = $parurl["legendahtml"]; +$layerDefault = $parurl["layerDefault"]; +// cria as pastas temporarias caso nao existam +if (! file_exists($dir_tmp)) { + @mkdir($dir_tmp, 0744); +} +if (file_exists($dir_tmp)) { + if (! file_exists($dir_tmp . "/comum")) { + @mkdir($dir_tmp . "/comum", 0744); + } + if (! file_exists($dir_tmp . "/saiku-datasources")) { + @mkdir($dir_tmp . "/saiku-datasources", 0744); + chmod($dir_tmp . "/saiku-datasources", 0744); + } + if (! file_exists($dir_tmp . "/cache")) { + @mkdir($dir_tmp . "/cache", 0744); + chmod($dir_tmp . "/cache", 0744); + } + if (! file_exists($dir_tmp . "/cache/googlemaps")) { + @mkdir($dir_tmp . "/cache/googlemaps", 0744); + chmod($dir_tmp . "/cache/googlemaps", 0744); + } +} +if (empty($opacidade)) { + $opacidade = 1; +} - // cria um clone WMS para efeitos de getfeatureinfo - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{cloneTMS:"'.$nomeLayer.'",layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{displayInLayerSwitcher:false,transitionEffect : null,singleTile:true,visibility:false,isBaseLayer:false, ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; - } - else{ - foreach($layers as $l){ - $singleTile = "false"; - if(strtoupper($l->getmetadata("TILES")) == "NAO"){ - $singleTile = "true"; - } - $tituloLayer = $l->getmetadata("tema"); - $nomeLayer = $l->name; - $link_tema = $dadosTemas[$nomeLayer]; - $link_tema = $link_tema["link_tema"]; - $visivel = "false"; - //if($l->status == MS_DEFAULT || in_array($tema,$visiveis)){ - if(in_array($tema,$visiveis)){ - $visivel = "true"; - } - if($l->type != 2 && $l->type != 3){ - $opacidade = 1; - } - // - //verifica se deve aplicar filtro - // - $filtro = $_GET["map_layer_".$l->name."_filter"]; - if(!empty($filtro)){ - $DESLIGACACHE = "sim"; - $nocache = "map_layer_".$l->name."_filter=".$filtro."&".$nocache; - } - $teffect = 'transitionEffect: "resize",'; - if(strtoupper($l->getmetadata("transitioneffect")) == "NAO"){ - $teffect = 'transitionEffect: null,'; - } - if($tituloLayer != ""){ - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{'.$teffect.' singleTile:'.$singleTile.',visibility:'.$visivel.',isBaseLayer:'.$ebase.', ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; - } - else{ - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{'.$teffect.' displayInLayerSwitcher:false,singleTile:'.$singleTile.',visibility:'.$visivel.',isBaseLayer:'.$ebase.', ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; - } - } - } - } - } - else{ - echo $tema." não foi encontrado.
"; - } - } - } -} -function nomeRandomicoM($n=10){ - $nomes = ""; - $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $max = 51; - for($i=0; $i < $n; ++$i) - { - $nomes .= $a{mt_rand(0, $max)}; - } - return $nomes; -} -function ajuda(){ - echo " +function ajuda() +{ + echo "

 	Mashup OpenLayers
 	Parâmetros:
-	restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente (veja em i3geo/admin/html/mapas.html)
-	opacidade - opacidade (de 0 a 1) aplicada aos temas do tipo poligonal ou raster (default 1)
-	kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ','
-	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'
-	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
-	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.
-	numzoomlevels - número de níveis de zoom, default=12
-	minresolution - resolução mínima. Utilizada para definir o primeiro nível de zoom. Default=0.703125
-	maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax)
-	mapext - extensão geográfica inicial do mapa (xmin,ymin,xmax,ymax)
-	largura - lagura do mapa em pixels
-	altura - altura do mapa em pixels
-	pontos - lista de coordenadas x e y que serão incluídas como marcas no mapa
-	marca - nome do arquivo que contém a imagem que será utilizada para mostrar as coordenadas
-	tiles (true|false) - indica se o modo tile será usado ou não (true por default). O modo tile pode tornar o mashup mais lento em algumas situações.
-	incluilayergrafico (true|false) - indica se o layer que recebe elementos gráficos será adicionado ou não ao mapa
-	ativalayerswicther (true|false) - inicia o mapa com a caixa de escolha das camadas (layerSwitcher) aberta ou não. Por default, inicia fechada
-	ativarodadomouse (true|false) - ativa ou não o zoom com base na roda do mouse (default é true)
-	legendahtml (true|false) - ativa ou não (default é false) a geração de legenda do tipo HTML no lugar de imagem png. Legendas HTML podem ser modificadas com base em CSS. A legenda é construída com o template i3geo/aplicmap/legendaOgc.html.
-	desligacache (sim|nao) - desativa o uso do cache de imagens em disco do lado do servidor, forçando a renderização dos tiles de cada camada em cada requisição
-	nocache (sim) - evita o uso de imagens em cache existentes no navegador do usuário
-	layerDefault (opcional) - layer que sera utilizado na ferramenta de identificacao. Quando especificado, nao sera mostrada a caixa para a escolha do layer
+	.restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente (veja em i3geo/admin/html/mapas.html)
+	.opacidade - opacidade (de 0 a 1) aplicada aos temas do tipo poligonal ou raster (default 1)
+	.kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ','
+	.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
+	.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.
+	.numzoomlevels - número de níveis de zoom, default=12
+	.maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax)
+	.mapext - extensão geográfica inicial do mapa (xmin,ymin,xmax,ymax)
+	.largura - lagura do mapa em pixels
+	.altura - altura do mapa em pixels
+	.pontos - lista de coordenadas x e y que serão incluídas como marcas no mapa
+	.marca - nome do arquivo que contém a imagem que será utilizada para mostrar as coordenadas
+	.tiles (true|false) - indica se o modo tile será usado ou não (true por default). O modo tile pode tornar o mashup mais lento em algumas situações.
+	.ativarodadomouse (true|false) - ativa ou não o zoom com base na roda do mouse (default é true)
 
-	Filtros
+	.Filtros
 
 	filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter=
 
@@ -531,305 +372,888 @@ function ajuda(){
 
 	no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'
 
-	fundo - lista com os nomes, separados por ',' dos layers que serão usados como fundo para o mapa. Se não for definido,
+	.fundo - lista com os nomes, separados por ',' dos layers que serão usados como fundo para o mapa. Se não for definido,
 	será usado o default. O primeiro da lista será o fundo ativo. Se na lista de temas de fundo estiver algum
 	tema incluido com o parametro 'temas', esses serão incluídos como temas de fundo.
 	Quando for vazio, o ultimo layer sera considerado como o layer de fundo
-	Os seguintes fundos podem usados nessa lista:
-
-	e_oce - ESRI Ocean Basemap
-	e_ims - ESRI Imagery World 2D
-	e_wsm - ESRI World Street Map
-	ol_mma - base cartográfica do Brasil
-	ol_wms - base mundial da Meta Carta
-	top_wms - toponímia do servidor do MMA usado no mapa de referência
-	est_wms - estados do Brasil
-
-	controles - lista com os nomes dos controles que serão adicionados ao mapa. Se não for definido, todos os controles serão adicionados
-	navigation
-	panzoombar
-	layerswitcher
-	scaleline
-	mouseposition
-	overviewmap
-	keyboarddefaults
-	botoes - lista com os nomes dos botoes que serão adicionados ao mapa. Se não for definido, todos os botões serão adicionados
-	pan
-	zoombox
-	zoomtot
-	zoomin
-	zoomout
-	distancia
-	area
-	identifica
-	ponto
-	linha
-	poligono
-	texto
-	edita
-	listag (lista geometrias)
-	apaga
-	captura
-	procura
-	frente
-	propriedades
-	tools
-	undo
-	salva
-	ajuda
-	fecha
-	corta
-	legenda
-	novaaba
-	grid
-	imprimir
+	Os seguintes fundos podem usados nessa lista: (lista completa na variavel i3GEO.Interface.openlayers.LAYERSADICIONAIS que pode ser verificada por meio do console javascript do navegador)
 
-	Para ver a lista de códigos de temas, que podem ser utilizados no parâmetro 'temas', acesse:
-	lista de temas. Os códigos são mostrados em vermelho.
+	osm, aquarela, toner, tonerlite, layMapQuestAerial
 
-	Exemplo:
-
-	<iframe height='400px' src='http://mapas.mma.gov.br/i3geo/mashups/openlayers.php?temas=bioma&altura=350&largura=350' style='border: 0px solid white;' width='400px'></iframe>
+	.controles - lista com os nomes dos controles que serão adicionados ao mapa. Se não for definido, todos os controles serão adicionados
+	   navigation
+	   panzoombar
+	   scaleline
+	   mouseposition
+	   overviewmap
+	   keyboarddefaults
 
+    .botoes - lista com os nomes dos botoes que serão adicionados ao mapa. Se não for definido, todos os botões serão adicionados
+    	zoombox
+    	zoomtot
+        zoomanterior
+        zoomproximo
+    	distancia
+    	area
+    	identifica
+    	ponto
+    	linha
+    	poligono
+    	texto
+    	edita
+    	listag (lista geometrias)
+    	apaga
+    	captura
+    	procura
+    	frente
+    	propriedades
+    	tools
+    	undo
+    	salva
+    	ajuda
+    	fecha
+    	corta
+    	legenda
+    	novaaba
+    	grid
+    	imprimir
+        marcador
+        analise
+        catalogo
+        camadas
 	";
-	exit;
+    exit();
 }
 ?>
-
-
+
+
 
+
 
-
-
- 0){
-	//echo ''."\n";
-	echo ''."\n";
-	echo ''."\n";
-}
-?>
-
+
+i3GEO - OpenLayers
+
+
+
+
+
+
+
+
+
+
+
 
+
+
 
 
-
-	';
-	}
-	else{
-		echo '
'; - } + + +
+
- ?> - - + //i3GEO.editorOL.botoes e definido na criacao do mapa, veja editorButtons + i3GEO.editorOL.criaBotoes(i3GEO.editor.botoes,"barraDeBotoesEditor"); + i3GEO.editorOL.kml = []; + i3GEO.editorOL.adicionaKml(); + i3GEO.editorOL.numzoom = ; + i3GEO.editorOL.marca = ''; + i3GEO.editorOL.pontos = []; + i3GEO.editorOL.adicionaMarcas(); + }; + (function() { + var parametrosMapa = { + //arquivo mapfile que servira de base para a criacao do mapa. Por default, sao utilizados os arquivos existentes em i3geo/aplicmap (geral1windows, geral1,...) + //Essa variavel pode ser definida em ms_configura tambem. Se nao estiver definida em nenhum lugar, o i3Geo tentara descobrir o arquivo adequado a ser utilizado. Voce pode utilizar essa opcao para abrir um mapa com as camadas que voce quiser, mas para evitar redundâncias, prefira o uso de &temasa + mapfilebase: "", + //extensao geografica do mapa + //deve ser definida em coordenadas no formato decimos de grau e na projecao geografica na sequencia xmin ymin xmax ymax + //exemplo [-77,-26,-30,6] + mapext: , + //perfil utilizado para restringir os menus de temas mostrando apenas os que correspondem a determinado perfil + perfil: "", + //layers que serao adicionados ao mapa. + //Cada layer corresponde ao nome do mapfile existente na pasta i3geo/temas sem a extensao '.map' + layers: { + //array com a lista dos layers que serao adicionados e ligados (visiveis) + add: , + //array com a lista dos layers que serao adicionados mas nao ligados + on: , + //array com os layers desligados + off: + }, + //lista de coordenadas x e y que serao adicionadas como pontos no mapa + points: { + //array com a lista de coordenadas + coord: [], + //titulo da nova camada + title: "", + }, + //lista de coordenadas x e y que serao adicionadas como linhas no mapa + lines: { + //array de arrays com a lista de coordenadas de cada linha + //exemplo [[-54,-12,-50,-12],[-50,-1,-50,-2,-50,-3]] + coord: [[]], + //titulo da nova camada + title:"" + }, + //lista de coordenadas x e y que serao adicionadas como poligonos no mapa + polygons: { + //array de arrays com a lista de coordenadas de cada poligono. A primeira coordenada deve ser igual a ultima. + //exemplo [[-50,-1,-48,-2,-50,-3,-50,-1]] + coord: [[]], + //titulo da nova camada + title:"" + }, + //insere elementos no mapa com coordenadas definidas em wkt + wkt: { + //string no formato wkt + coord: "", + //titulo da nova camada + title: "" + }, + //simbolo que sera utilizado para desenhar os elementos inseridos + symbol: { + //codigo do simbolo conforme definido em i3geo/symbols + name: "", + //em rgb, exemplo "0 255 0" + color: "", + //em pixels + size: "" + }, + //arquivo KML que sera incluido no mapa. Valido apenas na interface google maps + kml: { + url: "" + }, + //endereco de um WMS (sera incluido como uma camada no mapa) + wms: { + url: "", + layer: "", + style: "", + title: "", + srs: "", + imagetype: "", + version: "" + }, + //filtros que serao aplicados aos layers. Utilize a expressaso conforme definido na documentacao + //do mapserver, exemplo + //{layer: "_lbiomashp",expression: "(('[CD_LEGENDA]'='CAATINGA'))"} ou {layer: "_lbiomashp",expression: "cd_legenda='CAATINGA'"} + filters: , + //id de um mapa salvo e que sera recuperado + restoreMapId : , + cacheOff : '' + }; + var config = { + //id do elemento HTML onde o corpo do mapa sera renderizado + mapBody : "mapai3Geo", + //tipo de mapa. Pode ser: + //OL - utiliza o OpenLayers e coordenadas geograficas + //OSM - utiliza o OpenLayers e o OpenStreetMap como fundo, em projecao semelhante ao GoogleMaps + //GM - utiliza o GoogleMaps como motor de controle do mapa + mapType : "OSM", + //armazena em um cookie a ultima extensao geografica do mapa e utiliza essa extensao quando o mapa for aberto + saveExtension : false, + //aplica um filtro de cores apos a renderizacao da imagem de cada camada que compoe o mapa cinza|sepiaclara|sepianormal + posRenderType : "", + //Endereco do servidor i3Geo. Utilizado para gerar as requisicoes AJAX + //Por default e definido como: i3GEO.util.protocolo() + "://" + window.location.host + "/i3geo" + i3GeoServer : "", + //opacidade default para camadas que nao sejam do tipo linha ou ponto + //a opacidade sera aplicada ao objeto HTML e nao ao LAYER original + //se for vazio, sera utilizado o valor definido no LAYER original + //Nao se aplica na interface googlemaps + layerOpacity: , + //Funcao que sera executada apos a inicializacao do mapa + afterStart : function(){ + //$('.iconeGuiaMovel').tooltip({animation: false, trigger: "manual", placement: "left"}); + //$('.iconeGuiaMovel').tooltip('show'); + $("#i3GEOguiaMovelConteudo").mCustomScrollbar({scrollbarPosition: "outside",theme:"inset-2-dark"}); + adicionaBotoesEditor(); + $i("openlayers").style.backgroundColor = "rgb(245,245,245)"; + }, + //parametros de configuracao de diferentes componentes do mapa, como o catalogo de temas, balao de info, etc + components : { + //define se ao clicar no mapa sera feita a busca de atributos nas camadas existentes no mapa + info: true, + //template mustache usado para o balao de info + //se for vazio, utiliza o default info.html + infoTemplate: "", + //define se ao clicar no mapa sera feita a busca de atributos nas camadas existentes no mapa + info: true, + //lista com os codigos dos menus que serao considerados na montagem do catalogo de temas + idsMenus : [], + //webservice utilizado na opcao de encontrar lugares + searchService : "http://mapas.mma.gov.br/webservices/geonames.php", + //webservice wms que faz a apresentacao do lugar encontrado por searchService + searchWms : "http://mapas.mma.gov.br/webservices/geonameswms.php", + //posicao do mapa de referencia, em pixels [top,right] + referenceMapPosition : [4,120], + //propriedades do balao de informacoes mostrado quando o usuario clica no mapa + tooltip : { + //o resultado sera mostrado em uma janela do tipo modal + modal : false, + //url que sera utilizada para obter os dados via $.get. Deve estar no mesmo dominio do i3Geo. + //Ao final da url serao inseridos os parametros &xx=&yy= com valores em decimos de grau + //use apenas se modal for true + //exemplo: http://i3geo.saude.gov.br/i3geo/sage_tabelas/odm/odm6.php? + url: "", + //template que sera usado para compor o resultado da busca de dados + //se for vazio, serao utilizadas as outras opcoes + //se contiver a string {{{url}}} a mesma sera substituida por url + //exemplo: "" + templateModal: "", + //serao mostrados todos os dados ou apenas aqueles definidos na configuracao da camada + simple: true, + removeAoAdicionar : true, + //parametros exclusivos da interface openlayers + autoPan : true, + autoPanAnimation : { + duration : 250 + }, + minWidth : '200px', + //Altura e largura do tooltip (balao) + toolTipSize : ["100px","200px"] + }, + //barra de rolagem - ver plugin jquery https://github.com/malihu/malihu-custom-scrollbar-plugin + scrollBar: { + theme: "inset-2", + axis: "yx", + scrollbarPosition: "inside", + scrollButtons:{ enable: true }, + advanced:{ autoExpandHorizontalScroll: true } + } + }, + //parametros de configuracao das ferramentas que sao acionadas sob demanda + //ferramentas localizadas em i3geo/ferramentas + tools : { + //ferramenta de busca de camadas em um servico CSW + buscainde : { + //endereco do servico no padrao CSW + csw : "http://www.metadados.inde.gov.br/geonetwork/srv/br" + }, + //ferramenta de identificacao + identifica : { + //resolucao em pixels para busca de elementos + resolution : 8 + } + }, + //configuracoes especificas para a interface que utiliza o OpenLayers + openLayers : { + //utiliza ou nao tiles ao renderizar as camadas do mapa + //a utilizacao de tiles pode ser definida em cada camada, mas se essa propriedade for true, a definicao das camadas nao serao consideradas + singleTile : !, + //opcoes de inicializacao do mapa conforme definido na API do OpenLayers + MapOptions : { + layers : [], + controls : [], + loadTilesWhileAnimating : true, + loadTilesWhileInteracting : true, + //os objetos devem ser comentados na interface googleMaps + interactions : [ + new ol.interaction.DoubleClickZoom(), + new ol.interaction.KeyboardPan(), + new ol.interaction.KeyboardZoom(), + + new ol.interaction.PinchRotate(), + new ol.interaction.PinchZoom(), + new ol.interaction.DragZoom(), + new ol.interaction.DragPan() + ] + }, + //opcoes para o objeto view, que e uma instancia de MapOptions + ViewOptions : { + maxZoom : , + extent : + }, + //botoes que sao mostrados no editor vetorial + editorButtons : + }, + //configuracoes especificas para a interface GoogleMaps + googleMaps : { + //opcoes de inicializacao do mapa conforme definido na API do GoogleMaps + MapOptions : { + //estilo que sera utilizado no mapa + //pode ser um desses: roadmap, satellite, hybrid, terrain, Red, Countries, Night, Blue, Greyscale, No roads, Mixed, Chilled + //ver i3GEO.Interface.googleMaps.ESTILOS + mapTypeId : "roadmap", + scaleControl : true, + mapTypeControl : true, + mapTypeControlOptions: { + //position : google.maps.ControlPosition.LEFT_BOTTOM + }, + zoomControl:true, + zoomControlOptions: { + //style : google.maps.ZoomControlStyle.SMALL, + //position : google.maps.ControlPosition.LEFT_CENTER + }, + streetViewControl : true, + streetViewControlOptions: { + //position : google.maps.ControlPosition.LEFT_CENTER + } + } + } + }; + // + //inicia o mapa + //Veja tambem config.php + // + //O primeiro parametro permite alterar o mapa, inserindo camadas e outras definicoes que afetam o corpo do mapa + //O segundo parametro inclui configuracoes que afetam o funcionamento da interface que controla a visualizacao do mapa + // + i3GEO.init(parametrosMapa,config); + })(); + - + + \ No newline at end of file diff --git a/mashups/osm_depreciado.php b/mashups/osm_depreciado.php new file mode 100755 index 0000000..6c65e7d --- /dev/null +++ b/mashups/osm_depreciado.php @@ -0,0 +1,835 @@ +web; + $w->set("imagepath",dirname($w->imagepath)."/"); + $w->set("imageurl",dirname($w->imageurl)."/"); + // apaga algumas camadas + $l = $m->getlayerbyname("rosadosventos"); + if($l != ""){ + $l->set("status",MS_DELETE); + } + $l = $m->getlayerbyname("copyright"); + if($l != ""){ + $l->set("status",MS_DELETE); + } + $m->save($xbase); + $temas = $xbase; + if (!isset($mapext)){ + $mapext = $m->extent->minx." ".$m->extent->miny." ".$m->extent->maxx." ".$m->extent->maxy; + } +} +if(!isset($mapext)){ + $versao = versao(); + $versao = $versao["principal"]; + if(isset($base) && $base != ""){ + if(file_exists($base)){ + $f = $base; + } + else{ + $f = $locaplic."/aplicmap/".$base.".map"; + } + } + else + { + $f = ""; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $f = $locaplic."/aplicmap/geral1windowsv".$versao.".map"; + } + else{ + if($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){ + $f = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map"; + } + if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ + $f = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map"; + } + if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ + $f = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map"; + } + if($f == "") + { + $f = $locaplic."/aplicmap/geral1v".$versao.".map"; + } + } + } + if(@ms_newMapObj($f)){ + $mapae = ms_newMapObj($f); + $c = $mapae->extent; + $mapext = $c->minx.",".$c->miny.",".$c->maxx.",".$c->maxy; + } +} +// +// imprime na tela a ajuda ao usuário +// +if(!isset($temas) && isset($layers)){ + $temas = $layers; +} +if(!isset($temas)){ + ajuda(); +} +// problema na versão 211 do OpenLayers. Tamanho em % não é +// aceito +// if(!isset($largura)) + // {$largura = 500;} +if(isset($largura) && !isset($altura)){ + $altura = $largura; +} +if(isset($altura) && !isset($largura)){ + $largura = $altura; +} +// +// define quais controles serão mostrados no mapa +// +$objControles = array(); +if(isset($controles)){ + $controles = str_replace(" ",",",$controles); + $controles = strtolower($controles); + $controles = explode(",",$controles); + if(in_array("navigation",$controles)){ + $objControles[] = "new OpenLayers.Control.Navigation()"; + } + if(in_array("panzoombar",$controles)){ + $objControles[] = "new OpenLayers.Control.PanZoomBar()"; + } + if(in_array("layerswitcher",$controles)){ + $objControles[] = "new OpenLayers.Control.LayerSwitcher({'ascending':false})"; + } + if(in_array("scaleline",$controles)){ + $objControles[] = "new OpenLayers.Control.ScaleLine()"; + } + if(in_array("mouseposition",$controles)) + { + $objControles[] = "new OpenLayers.Control.MousePosition({'separator':' '})"; + } + if(in_array("overviewmap",$controles)){ + $objControles[] = "new OpenLayers.Control.OverviewMap()"; + } + if(in_array("keyboarddefaults",$controles)){ + $objControles[] = "new OpenLayers.Control.KeyboardDefaults()"; + } +} +// +// define quais botoes serão mostrados no mapa +// +$objBotoes = array(); +if(isset($botoes)){ + $botoes = str_replace(" ",",",$botoes); + $botoes = strtolower($botoes); + $botoes = explode(",",$botoes); + if(in_array("grid",$botoes)){ + $objBotoes[] = "'grid':true"; + } + if(in_array("imprimir",$botoes)){ + $objBotoes[] = "'imprimir':true"; + } + if(in_array("pan",$botoes)){ + $objBotoes[] = "'pan':true"; + } + if(in_array("zoombox",$botoes)){ + $objBotoes[] = "'zoombox':true"; + } + if(in_array("zoomtot",$botoes)){ + $objBotoes[] = "'zoomtot':true"; + } + if(in_array("zoomout",$botoes)){ + $objBotoes[] = "'zoomout':true"; + } + if(in_array("zoomin",$botoes)) + { + $objBotoes[] = "'zoomin':true"; + } + if(in_array("legenda",$botoes)){ + $objBotoes[] = "'legenda':true"; + } + if(in_array("distancia",$botoes)){ + $objBotoes[] = "'distancia':true"; + } + if(in_array("area",$botoes)){ + $objBotoes[] = "'area':true"; + } + if(in_array("identifica",$botoes)){ + $objBotoes[] = "'identifica':true"; + } + if(in_array("linha",$botoes)){ + $objBotoes[] = "'linha':true"; + } + if(in_array("ponto",$botoes)){ + $objBotoes[] = "'ponto':true"; + } + if(in_array("poligono",$botoes)){ + $objBotoes[] = "'poligono':true"; + } + if(in_array("edita",$botoes)){ + $objBotoes[] = "'edita':true"; + } + if(in_array("listag",$botoes)){ + $objBotoes[] = "'listag':true"; + } + if(in_array("corta",$botoes)){ + $objBotoes[] = "'corta':true"; + } + if(in_array("apaga",$botoes)){ + $objBotoes[] = "'apaga':true"; + } + if(in_array("procura",$botoes)){ + $objBotoes[] = "'procura':true"; + } + if(in_array("salva",$botoes)){ + $objBotoes[] = "'salva':true"; + } + if(in_array("ajuda",$botoes)){ + $objBotoes[] = "'ajuda':true"; + } + if(in_array("fecha",$botoes)){ + $objBotoes[] = "'fecha':true"; + } + if(in_array("tools",$botoes)){ + $objBotoes[] = "'tools':true"; + } + if(in_array("undo",$botoes)){ + $objBotoes[] = "'undo':true"; + } + if(in_array("propriedades",$botoes)){ + $objBotoes[] = "'propriedades':true"; + } + if(in_array("frente",$botoes)){ + $objBotoes[] = "'frente':true"; + } + if(in_array("texto",$botoes)){ + $objBotoes[] = "'texto':true"; + } + if(in_array("novaaba",$botoes)){ + $objBotoes[] = "'novaaba':true"; + } + $botoes = "{".implode(",",$objBotoes)."}"; +} + +// +// define a lista de layers do tipo baselayers +// $fundo é um array com a lista dos nomes possíveis ou passados +// pela url +// cada um deve ser definido em openlayers.js.php +// +if(isset($fundo) && $fundo != ""){ + $fundo = str_replace(","," ",$fundo); + $fundo = explode(" ",$fundo); +} +// +// define quais os layers que comporão o mapa +// +//$objOpenLayers guarda a string javascript que sera usada para criar os objetos +//layer do OpenLayers +if(isset($temas)){ + $objOpenLayers = array(); +} +if($temas != ""){ + $temas = str_replace(" ",",",$temas); + // $temas = strtolower($temas); + $temas = explode(",",$temas); + if(!isset($visiveis)){ + $visiveis = $temas; + } + else{ + $visiveis = str_replace(" ",",",$visiveis); + $visiveis = explode(",",$visiveis); + } + $objOpenLayers = array(); + if(!isset($servidor)){ + $servidor = "../ogc.php"; + } + // + //lista de ferramentas + //lista os nomes de metadados que contem os parametros das + //ferramentas customizaveis e que seraco incluidas na propriedade do layer + // + $listaFerramentas = array("tme","storymap","animagif"); + $dadosTemas = pegaDadosAdminKey("SELECT codigo_tema,link_tema FROM __esq__i3geoadmin_temas WHERE codigo_tema IN('".implode($temas,',')."')","__esq__"); + foreach($temas as $tema){ + // + //utilzado para obter os parametros de ferramentas especificas indicadas nos metadados do LAYER + // + $ferramentas = array(); + if(file_exists($locaplic."/temas/".$tema.".gvp")){ + include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); + $gm = new gvsig2mapfile($locaplic."/temas/".$tema.".gvp"); + $gvsigview = $gm->getViewsNames(); + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$gvsigview[0].'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{layers:"'.$tema.'",transparent: "true", format: "image/png"},{singleTile:false,visibility:true,isBaseLayer:false, ferramentas :'.$ferramentas.')'; + } + else{ + $nomeMap = ""; + if(file_exists($locaplic."/temas/".$tema.".map")){ + $nomeMap = $locaplic."/temas/".$tema.".map"; + } + else{ + if(file_exists($tema)){ + $nomeMap = $tema; + } + else{ + // acontece caso o mapfile tenha sido gerado na pasta + // temporaria por algum sistema + if(file_exists($dir_tmp."/".$tema.".map")){ + $nomeMap = $dir_tmp."/".$tema.".map"; + } + } + } + if($nomeMap != ""){ + $layersNomes = array(); + $layers = array(); + $maptemp = @ms_newMapObj($nomeMap); + if($maptemp){ + $nlayers = $maptemp->numlayers; + for($i=0;$i<($nlayers);++$i) { + $layern = $maptemp->getLayer($i); + // + //verifica se o layer contem ferramentas parametrizadas + // + foreach($listaFerramentas as $lf){ + $meta = $layern->getmetadata($lf); + if($meta != ""){ + $ferramentas[] = "'".$lf."':".$meta; + } + } + $ferramentas = '{'.implode(",",$ferramentas).'}'; + if($layern->getmetadata("PLUGINI3GEO") != ""){ + //obtem os dados necessarios para iniciar o plugin + //os objetos layer (openLayers) sao criados apenas no final + //do processo, pois necessitam usar javascript e nao apenas PHP + $temasPluginI3Geo[] = array( + "name"=>$layern->name, + "tema"=>$layern->getmetadata("tema"), + "plugin"=>$layern->getmetadata("PLUGINI3GEO"), + "cache"=>strtoupper($layern->getmetadata("cache")), + "transitioneffect"=>strtoupper($layern->getmetadata("transitioneffect")), + "tiles"=>strtoupper($layern->getmetadata("tiles")), + "posicaoLayer"=>count($objOpenLayers), + "ferramentas"=>$ferramentas + ); + $objOpenLayers[] = ""; + } + else{ + $layersNomes[] = $layern->name; + $layers[] = $layern; + } + } + $nomeLayer = implode(",",$layersNomes); + $tituloLayer = $layern->getmetadata("tema"); + $ebase = "false"; + if(isset($fundo) && $fundo != ""){ + if(in_array($tema,$fundo)){ + $ebase = "true"; + } + } + $visivel = "false"; + if(in_array($tema,$visiveis)){ + $visivel = "true"; + } + if(strtolower($DESLIGACACHE) != "sim" && $nlayers == 1 && strtoupper($layern->getmetadata("cache")) == "SIM" && $layern->getmetadata("PLUGINI3GEO") == ""){ + // + //obtem a fonte + // + $link_tema = $dadosTemas[$layern->name]; + $link_tema = $link_tema["link_tema"]; + if($layern->type != 2 && $layern->type != 3){ + $opacidade = 1; + } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$layern->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$layern->name."_filter=".$filtro."&".$nocache; + } + $teffect = 'transitionEffect: "resize",'; + if(strtoupper($layern->getmetadata("transitioneffect")) == "NAO"){ + $teffect = 'transitionEffect: null,'; + } + // nesse caso o layer e adicionado como TMS + // tms leva os parametros do TMS + //$objOpenLayers[] = 'new OpenLayers.Layer.TMS("'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'",{'.$teffect.' tileOrigin: new OpenLayers.LonLat(-180, -90),opacity:'.$opacidade.',serviceVersion:"&tms=",visibility:'.$visivel.',isBaseLayer:'.$ebase.',layername:"'.$nomeLayer.'",type:"png", ferramentas :'.$ferramentas.'})'; + $objOpenLayers[] = 'new OpenLayers.Layer.OSM("'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&Z=${z}&X=${x}&Y=${y}",{'.$teffect.' tileOrigin: new OpenLayers.LonLat(-180, -90),opacity:'.$opacidade.',serviceVersion:"&tms=",visibility:'.$visivel.',isBaseLayer:'.$ebase.',layername:"'.$nomeLayer.'",type:"png", ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; + + // cria um clone WMS para efeitos de getfeatureinfo + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{cloneTMS:"'.$nomeLayer.'",layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{displayInLayerSwitcher:false,transitionEffect : null,singleTile:true,visibility:false,isBaseLayer:false, ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; + } + else{ + foreach($layers as $l){ + $singleTile = "false"; + if(strtoupper($l->getmetadata("TILES")) == "NAO"){ + $singleTile = "true"; + } + $tituloLayer = $l->getmetadata("tema"); + $nomeLayer = $l->name; + $link_tema = $dadosTemas[$nomeLayer]; + $link_tema = $link_tema["link_tema"]; + $visivel = "false"; + //if($l->status == MS_DEFAULT || in_array($tema,$visiveis)){ + if(in_array($tema,$visiveis)){ + $visivel = "true"; + } + if($l->type != 2 && $l->type != 3){ + $opacidade = 1; + } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$l->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$l->name."_filter=".$filtro."&".$nocache; + } + $teffect = 'transitionEffect: "resize",'; + if(strtoupper($l->getmetadata("transitioneffect")) == "NAO"){ + $teffect = 'transitionEffect: null,'; + } + if($tituloLayer != ""){ + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{'.$teffect.' singleTile:'.$singleTile.',visibility:'.$visivel.',isBaseLayer:'.$ebase.', ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; + } + else{ + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "'.$servidor.'?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{'.$teffect.' displayInLayerSwitcher:false,singleTile:'.$singleTile.',visibility:'.$visivel.',isBaseLayer:'.$ebase.', ferramentas :'.$ferramentas.',link_tema:"'.$link_tema.'"})'; + } + } + } + } + } + else{ + echo $tema." não foi encontrado.
"; + } + } + } +} +function nomeRandomicoM($n=10){ + $nomes = ""; + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $max = 51; + for($i=0; $i < $n; ++$i) + { + $nomes .= $a{mt_rand(0, $max)}; + } + return $nomes; +} +function ajuda(){ + echo " +

+	Mashup OpenLayers
+	Parâmetros:
+	restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente (veja em i3geo/admin/html/mapas.html)
+	opacidade - opacidade (de 0 a 1) aplicada aos temas do tipo poligonal ou raster (default 1)
+	kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ','
+	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'
+	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
+	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.
+	numzoomlevels - número de níveis de zoom, default=12
+	minresolution - resolução mínima. Utilizada para definir o primeiro nível de zoom. Default=0.703125
+	maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax)
+	mapext - extensão geográfica inicial do mapa (xmin,ymin,xmax,ymax)
+	largura - lagura do mapa em pixels
+	altura - altura do mapa em pixels
+	pontos - lista de coordenadas x e y que serão incluídas como marcas no mapa
+	marca - nome do arquivo que contém a imagem que será utilizada para mostrar as coordenadas
+	tiles (true|false) - indica se o modo tile será usado ou não (true por default). O modo tile pode tornar o mashup mais lento em algumas situações.
+	incluilayergrafico (true|false) - indica se o layer que recebe elementos gráficos será adicionado ou não ao mapa
+	ativalayerswicther (true|false) - inicia o mapa com a caixa de escolha das camadas (layerSwitcher) aberta ou não. Por default, inicia fechada
+	ativarodadomouse (true|false) - ativa ou não o zoom com base na roda do mouse (default é true)
+	legendahtml (true|false) - ativa ou não (default é false) a geração de legenda do tipo HTML no lugar de imagem png. Legendas HTML podem ser modificadas com base em CSS. A legenda é construída com o template i3geo/aplicmap/legendaOgc.html.
+	desligacache (sim|nao) - desativa o uso do cache de imagens em disco do lado do servidor, forçando a renderização dos tiles de cada camada em cada requisição
+	nocache (sim) - evita o uso de imagens em cache existentes no navegador do usuário
+	layerDefault (opcional) - layer que sera utilizado na ferramenta de identificacao. Quando especificado, nao sera mostrada a caixa para a escolha do layer
+
+	Filtros
+
+	filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter=
+
+	Exemplo de filtro
+
+	?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))
+
+	no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'
+
+	fundo - lista com os nomes, separados por ',' dos layers que serão usados como fundo para o mapa. Se não for definido,
+	será usado o default. O primeiro da lista será o fundo ativo. Se na lista de temas de fundo estiver algum
+	tema incluido com o parametro 'temas', esses serão incluídos como temas de fundo.
+	Quando for vazio, o ultimo layer sera considerado como o layer de fundo
+	Os seguintes fundos podem usados nessa lista:
+
+	e_oce - ESRI Ocean Basemap
+	e_ims - ESRI Imagery World 2D
+	e_wsm - ESRI World Street Map
+	ol_mma - base cartográfica do Brasil
+	ol_wms - base mundial da Meta Carta
+	top_wms - toponímia do servidor do MMA usado no mapa de referência
+	est_wms - estados do Brasil
+
+	controles - lista com os nomes dos controles que serão adicionados ao mapa. Se não for definido, todos os controles serão adicionados
+	navigation
+	panzoombar
+	layerswitcher
+	scaleline
+	mouseposition
+	overviewmap
+	keyboarddefaults
+	botoes - lista com os nomes dos botoes que serão adicionados ao mapa. Se não for definido, todos os botões serão adicionados
+	pan
+	zoombox
+	zoomtot
+	zoomin
+	zoomout
+	distancia
+	area
+	identifica
+	ponto
+	linha
+	poligono
+	texto
+	edita
+	listag (lista geometrias)
+	apaga
+	captura
+	procura
+	frente
+	propriedades
+	tools
+	undo
+	salva
+	ajuda
+	fecha
+	corta
+	legenda
+	novaaba
+	grid
+	imprimir
+
+	Para ver a lista de códigos de temas, que podem ser utilizados no parâmetro 'temas', acesse:
+	lista de temas. Os códigos são mostrados em vermelho.
+
+	Exemplo:
+
+	<iframe height='400px' src='http://mapas.mma.gov.br/i3geo/mashups/openlayers.php?temas=bioma&altura=350&largura=350' style='border: 0px solid white;' width='400px'></iframe>
+
+	";
+	exit;
+}
+?>
+
+
+
+
+
+
+ 0){
+	//echo ''."\n";
+	echo ''."\n";
+	echo ''."\n";
+}
+?>
+
+
+
+
+
+	
'; + } + else{ + echo '
'; + } + + ?> + + + + -- libgit2 0.21.2