Commit badcba4f3b3f56bd22e096c7431e3732547b6974

Authored by Edmar Moretti
1 parent 0c721e5a

Reformulação da ferramenta googlemaps permitindo que o mapa do i3geo seja sobreposto ao googlemaps

classesjs/classe_util.js
... ... @@ -30,6 +30,22 @@ Free Software Foundation, Inc., no endereço
30 30 if(typeof(i3GEO) == 'undefined'){
31 31 i3GEO = new Array();
32 32 }
  33 +/*
  34 +Function: $i
  35 +
  36 +Obtém um elemento DOM a partir de seu id
  37 +
  38 +Parameters:
  39 +
  40 +id - {String} ID do elemento.
  41 +
  42 +Returns:
  43 +
  44 +{Object} Objeto.
  45 +*/
  46 +$i = function(id)
  47 +{return document.getElementById(id);};
  48 +
33 49 i3GEO.util = {
34 50 /*
35 51 Function: insereCookie
... ...
classesjs/ferramentas.js
... ... @@ -1508,9 +1508,9 @@ function google()
1508 1508 {
1509 1509 criaboxg();
1510 1510 g_operacao = "navega";
1511   - if(navn){wdocaf("350px","350px",g_locaplic+"/ferramentas/googlemaps/index.htm","","","Google maps");}
  1511 + if(navn){wdocaf((objmapa.w/2)+20+"px",(objmapa.h/2)+20+"px",g_locaplic+"/ferramentas/googlemaps/index.php","","","Google maps");}
1512 1512 else
1513   - {wdocaf("370px","370px",g_locaplic+"/ferramentas/googlemaps/index.htm","","","Google maps");}
  1513 + {wdocaf("500px","380px",g_locaplic+"/ferramentas/googlemaps/index.php","","","Google maps");}
1514 1514 }
1515 1515 /*
1516 1516 Function: scielo
... ...
classesjs/i3geonaocompacto.js
1   -/*
2   -Function: $i
3   -
4   -Pega um objeto do documento.
5   -
6   -Exemplo: $i("box1")
7   -
8   -Parâmetros:
9   -
10   -id - id do objeto
11   -
12   -Retorno:
13   -
14   -object - objeto javaScript
15   -*/
16   -var $i = function(id)
17   -{return document.getElementById(id);};
18   -/*
19   -Function: $trad
20   -
21   -Pega o termo traduzido para uma lingua específica
22   -
23   -Parameters:
24   -
25   -id - id que identifica o texto na variável g_linguagem, definida em configura.js
26   -*/
27   -var $trad = function(id)
28   -{
29   - return eval("g_traducao."+id+"[0]."+g_linguagem+";");
30   -};
31   -
32 1 var mostradicasf = function(){};
33 2 var scriptLocation = "";
34 3 var scripts = document.getElementsByTagName('script');
... ...
classesphp/parse_cgi.php 0 → 100644
... ... @@ -0,0 +1,101 @@
  1 +<?php
  2 +/*
  3 +Title: parse_cgi.php
  4 +
  5 +Este programa alguns dos parâmetros do mapserver CGI e retorna uma imagem do mapa.
  6 +
  7 +É utilizado para processar o mapfile segundo as necessidades do i3geo, como por exemplo, fazendo a substituição
  8 +das variáveis de conexão com banco.
  9 +
  10 +Deve ser utilizado na tag IMG de umarquivo HTML.
  11 +
  12 +Parameters:
  13 +
  14 +$g_sid - código da seção aberta
  15 +
  16 +$map_size - string com o tamanho do novo mapa (w h)
  17 +
  18 +$mapext - extensão geográfica do novo mapa (xmin ymin xmax ymax)
  19 +
  20 +$map_imagecolor - cor do fundo do mapa (default é -1 -1 -1)
  21 +
  22 +$map_transparent - a cor do fundo será transparente? (ON OFF, default é ON)
  23 +
  24 +About: Licença
  25 +
  26 +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  27 +
  28 +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
  29 +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br
  30 +
  31 +Este programa é software livre; você pode redistribuí-lo
  32 +e/ou modificá-lo sob os termos da Licença Pública Geral
  33 +GNU conforme publicada pela Free Software Foundation;
  34 +tanto a versão 2 da Licença.
  35 +Este programa é distribuído na expectativa de que seja útil,
  36 +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
  37 +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
  38 +Consulte a Licença Pública Geral do GNU para mais detalhes.
  39 +Você deve ter recebido uma cópia da Licença Pública Geral do
  40 +GNU junto com este programa; se não, escreva para a
  41 +Free Software Foundation, Inc., no endereço
  42 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  43 +*/
  44 +error_reporting(E_ALL);
  45 +include_once("pega_variaveis.php");
  46 +
  47 +include_once ("carrega_ext.php");
  48 +include_once("funcoes_gerais.php");
  49 +session_name("i3GeoPHP");
  50 +session_id($g_sid);
  51 +session_start();
  52 +$map_file = $_SESSION["map_file"];
  53 +include_once("../ms_configura.php");
  54 +if(isset($fingerprint))
  55 +{
  56 + if (md5('I3GEOSEC' . $_SERVER['HTTP_USER_AGENT'] . session_id()) != $fingerprint)
  57 + {exit;}
  58 +}
  59 +if (!isset($map_imagecolor)) $map_imagecolor = "-1 -1 -1";
  60 +
  61 +if (!isset($map_transparent)) $map_transparent = "ON";
  62 +//
  63 +//faz uma cópia do mapfile para poder manipular sem afetar omapfile atual usado pelo i3geo
  64 +//
  65 +$nomerando = nomerandomico();
  66 +//echo $map_file."<br>";
  67 +$map_filen = str_replace(basename($map_file),$nomerando.".map",$map_file);
  68 +//echo $map_filen."<br>";
  69 +copy($map_file,$map_filen);
  70 +substituiCon($map_filen,$postgis_mapa);
  71 +$map = ms_newMapObj($map_filen);
  72 +$layersNames = $map->getalllayernames();
  73 +foreach ($layersNames as $layerName)
  74 +{
  75 + $layer = $map->getLayerByname($layerName);
  76 + if ($layer->getmetadata("classesnome") != "")
  77 + {autoClasses(&$layer,$map);}
  78 +}
  79 +if(isset($map_size))
  80 +{
  81 + $map_size = explode(",",$map_size);
  82 + $map->setsize($map_size[0],$map_size[1]);
  83 +}
  84 +if(isset($mapext))
  85 +{
  86 + $mapext = explode(" ",$mapext);
  87 + $map->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]);
  88 +}
  89 +$map_imagecolor = explode(" ",$map_imagecolor);
  90 +$imgcolor = $map->imagecolor;
  91 +$imgcolor->setrgb($map_imagecolor[0],$map_imagecolor[1],$map_imagecolor[2]);
  92 +$o = $map->outputformat;
  93 +if(strtolower($map_transparent) == "on")
  94 +$o->set("transparent",MS_ON);
  95 +else
  96 +$o->set("transparent",MS_OFF);
  97 +$img = $map->draw();
  98 +
  99 +echo header("Content-type: " . $map->outputformat->mimetype . "\n\n");
  100 +$img->saveImage("");
  101 +?>
... ...
ferramentas/googlemaps/index.htm
... ... @@ -41,13 +41,25 @@
41 41 GEvent.addListener(map, "moveend", function() {
42 42 ondegoogle(map);
43 43 });
44   - //var kml = new GGeoXml("http://mapas.mma.gov.br/i3geo/pacotes/kmlmapserver/kmlservice.php?map=bioma&typename=bioma&request=kml");
45   - //map.addOverlay(kml)
46   - //kml.initialize(map)
  44 + //var boundaries = new GLatLngBounds(new GLatLng(40.716216,-74.213393), new GLatLng(40.765641,-74.139235));
  45 +
  46 + //wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  47 + //map.addOverlay(wmsmap);
  48 +
47 49 GEvent.addListener(map, "zoomend", function() {
48 50 ondegoogle();
49   - });
  51 + //map.removeOverlay(wmsmap);
  52 + //wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  53 + //map.addOverlay(wmsmap);
50 54  
  55 + });
  56 + /*
  57 + GEvent.addListener(map, "dragend", function() {
  58 + map.removeOverlay(wmsmap);
  59 + wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  60 + map.addOverlay(wmsmap);
  61 + });
  62 + */
51 63 function moveMapa(bd)
52 64 {
53 65 nex = bd.minX+" "+bd.minY+" "+bd.maxX+" "+bd.maxY
... ... @@ -91,6 +103,18 @@
91 103 //map.setZoom(level)
92 104 map.panTo(new GLatLng(pt2,pt1))
93 105 }
  106 + function bbox()
  107 + {
  108 + var bd = map.getBounds();
  109 + var so = bd.getSouthWest();
  110 + var ne = bd.getNorthEast();
  111 + var bbox = so.lng()+","+so.lat()+","+ne.lng()+","+ne.lat()
  112 + return (bbox)
  113 + }
  114 + function criaWMS()
  115 + {
  116 + return("http://mapas.mma.gov.br/i3geo/ogc.php?tema=bioma&width="+parseInt(document.getElementById("map").style.width)+"&height="+parseInt(document.getElementById("map").style.height)+"&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&STYLES=&BGCOLOR=0xFFFFFF&FORMAT=image/png&TRANSPARENT=TRUE&layers=bioma&bbox="+bbox())
  117 + }
94 118 ondegoogle(map);
95 119 </script>
96 120 </body>
... ...
ferramentas/googlemaps/index.php 0 → 100644
... ... @@ -0,0 +1,186 @@
  1 +<?php
  2 +include_once("../../ms_configura.php");
  3 +?>
  4 +<html>
  5 +<head>
  6 +<script src="../../pacotes/cpaint/cpaint2.inc.compressed.js" type="text/javascript"></script>
  7 +<script language="JavaScript" type="text/javascript" src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<?php echo $googleApiKey; ?>">
  8 +</script>
  9 +<title></title>
  10 + </head>
  11 + <body onunload="GUnload()">
  12 + <div id="map" style="width: 440px; height: 340px"></div>
  13 +
  14 + <script type="text/javascript" >
  15 + var m = document.getElementById("map")
  16 + m.style.width = window.parent.objmapa.w / 2
  17 + m.style.height = window.parent.objmapa.h / 2
  18 + //chave na producao= ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxSieGwtcPDeiUtRiq7Xa63cyLppcxTVYXnVlPwveOe-sXuXfpBeNpL6pA
  19 + //chave no desenvolvimento = ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxQ_qvn5wqSkbcx9uoqrWGnUcZ7lqhRVzkJwzeDN3nQJheG7FjoxyruBIQ
  20 + i3geoOverlay = false;
  21 + if(window.parent.document.getElementById("boxg"))
  22 + window.parent.document.getElementById("boxg").style.zIndex = 0
  23 + navm = false; // IE
  24 + navn = false; // netscape
  25 + var app = navigator.appName.substring(0,1);
  26 + if (app=='N') navn=true; else navm=true;
  27 +
  28 + if(window.parent.objmapa)
  29 + {
  30 + docmapa = window.parent.document
  31 + pol = window.parent.objmapa.extent
  32 + ret = pol.split(" ")
  33 + pt1 = (( (ret[0] * -1) - (ret[2] * -1) ) / 2) + ret[0] *1
  34 + pt2 = (((ret[1] - ret[3]) / 2)* -1) + ret[1] *1
  35 + pt = pt1+","+pt2
  36 + }
  37 + else
  38 + {
  39 + pt1 = "-54";
  40 + pt2 = "-12";
  41 + }
  42 + map = new GMap2(document.getElementById("map"));
  43 + map.setMapType(G_SATELLITE_MAP);
  44 + map.addMapType(G_SATELLITE_3D_MAP);
  45 + map.addControl(new GLargeMapControl());
  46 + map.addControl(new GMapTypeControl());
  47 + map.addControl(new GScaleControl());
  48 + map.setCenter(new GLatLng(pt2,pt1), 8);
  49 + GEvent.addListener(map, "moveend", function() {
  50 + ondegoogle(map);
  51 + });
  52 + if(i3geoOverlay)
  53 + {
  54 + //var boundaries = new GLatLngBounds(new GLatLng(40.716216,-74.213393), new GLatLng(40.765641,-74.139235));
  55 + wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  56 + map.addOverlay(wmsmap);
  57 + }
  58 + GEvent.addListener(map, "zoomend", function() {
  59 + ondegoogle();
  60 + if(i3geoOverlay)
  61 + {
  62 + map.removeOverlay(wmsmap);
  63 + wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  64 + map.addOverlay(wmsmap);
  65 + }
  66 + });
  67 + GEvent.addListener(map, "dragend", function() {
  68 + if(i3geoOverlay)
  69 + {
  70 + map.removeOverlay(wmsmap);
  71 + wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  72 + map.addOverlay(wmsmap);
  73 + }
  74 + });
  75 + function botaoI3geo() {
  76 + }
  77 + botaoI3geo.prototype = new GControl();
  78 + botaoI3geo.prototype.initialize = function(map) {
  79 + var container = document.createElement("div");
  80 + var i3geo = document.createElement("div");
  81 + this.setButtonStyle_(i3geo);
  82 + container.appendChild(i3geo);
  83 + i3geo.appendChild(document.createTextNode("i3Geo"));
  84 + GEvent.addDomListener(i3geo, "click", function() {
  85 + ativaI3geo();
  86 + });
  87 + map.getContainer().appendChild(container);
  88 + return container;
  89 + }
  90 + botaoI3geo.prototype.getDefaultPosition = function() {
  91 + return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(70, 6));
  92 + }
  93 + botaoI3geo.prototype.setButtonStyle_ = function(button) {
  94 + button.style.textDecoration = "none";
  95 + button.style.color = "black";
  96 + button.style.backgroundColor = "white";
  97 + button.style.font = "small Arial";
  98 + button.style.border = "1px solid black";
  99 + button.style.padding = "1px";
  100 + button.style.marginBottom = "3px";
  101 + button.style.textAlign = "center";
  102 + button.style.width = "3em";
  103 + button.style.cursor = "pointer";
  104 + }
  105 + if(window.parent.objmapa.mapfile)
  106 + map.addControl(new botaoI3geo());
  107 +
  108 + function moveMapa(bd)
  109 + {
  110 + nex = bd.minX+" "+bd.minY+" "+bd.maxX+" "+bd.maxY
  111 + var p = window.parent.g_locaplic+"/classesphp/mapa_controle.php?funcao=mudaext&ext="+nex
  112 + var cp = new cpaint();
  113 + //cp.set_debug(2)
  114 + cp.set_response_type("JSON");
  115 + cp.call(p,"mudaExtensao",window.parent.ajaxredesenha);
  116 + //ondegoogle(bd);
  117 + }
  118 + function ondegoogle()
  119 + {
  120 + if(window.parent.objmapa)
  121 + {
  122 + var bd = map.getBounds();
  123 + var so = bd.getSouthWest();
  124 + var ne = bd.getNorthEast();
  125 + var xyMin = window.parent.convddtela(so.lng(),so.lat(),window.parent.document);
  126 + var xyMax = window.parent.convddtela(ne.lng(),ne.lat(),window.parent.document);
  127 + var box = window.parent.$i("boxg")
  128 + var w = xyMax[0]-xyMin[0]
  129 + var h = xyMin[1]-xyMax[1]
  130 + box.style.display = "block"
  131 + box.style.width = w
  132 + box.style.height = h
  133 + box.style.top = xyMax[1]+"px"
  134 + box.style.left = xyMin[0]+"px"
  135 + box.style.display="block"
  136 + }
  137 + }
  138 +
  139 + function panTogoogle()
  140 + {
  141 + var b = window.parent.document.getElementById("boxg");
  142 + b.style.display="block";
  143 + pol = window.parent.objmapa.extent;
  144 + ret = pol.split(" ");
  145 + pt1 = (( (ret[0] * -1) - (ret[2] * -1) ) / 2) + ret[0] *1;
  146 + pt2 = (((ret[1] - ret[3]) / 2)* -1) + ret[1] *1;
  147 + //map.centerAndZoom(new GLatLng(pt2,pt1),map.getZoom());
  148 + //map.setZoom(level)
  149 + map.panTo(new GLatLng(pt2,pt1))
  150 + }
  151 + function bbox()
  152 + {
  153 + var bd = map.getBounds();
  154 + var so = bd.getSouthWest();
  155 + var ne = bd.getNorthEast();
  156 + var bbox = so.lng()+" "+so.lat()+" "+ne.lng()+" "+ne.lat()
  157 + return (bbox)
  158 + }
  159 + function criaWMS()
  160 + {
  161 + var cgi = window.parent.g_locaplic+"/classesphp/parse_cgi.php?g_sid="+window.parent.g_sid
  162 + var parametros = "&map_size="+parseInt(document.getElementById("map").style.width)
  163 + parametros += ","+parseInt(document.getElementById("map").style.height)
  164 + parametros += "&mapext="+bbox()
  165 + parametros += "&map_imagecolor=-1 -1 -1&map_transparent=on"
  166 + //alert(cgi+parametros)
  167 + return(cgi+parametros)
  168 + }
  169 + function ativaI3geo()
  170 + {
  171 + if(i3geoOverlay)
  172 + {
  173 + i3geoOverlay = false;
  174 + map.removeOverlay(wmsmap);
  175 + }
  176 + else
  177 + {
  178 + i3geoOverlay = true;
  179 + wmsmap = new GGroundOverlay(criaWMS(), map.getBounds());
  180 + map.addOverlay(wmsmap);
  181 + }
  182 + }
  183 + ondegoogle(map);
  184 + </script>
  185 + </body>
  186 +</html>
0 187 \ No newline at end of file
... ...
ms_configura.php
... ... @@ -50,6 +50,17 @@ $mensagemInicia = &#39;Versão 4.1 beta&#39;;
50 50 Nome que será utilizado em alguns cabçalhos e títulos de páginas
51 51 */
52 52 $tituloInstituicao = "MMA - Ministerio do Meio Ambiente";
  53 +/*
  54 + Variable: $googleApiKey
  55 +
  56 + Chave utilizada pela API do Google maps.
  57 +
  58 + A API do Google maps é utilizada em algumas funcionalidades do i3geo. Vc deve registrar uma chave
  59 + no site do Google para o seu endereço de servidor web. veja como fazer em:
  60 + http://code.google.com/apis/maps/signup.html
  61 +*/
  62 +$googleApiKey = "ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxSieGwtcPDeiUtRiq7Xa63cyLppcxTVYXnVlPwveOe-sXuXfpBeNpL6pA";
  63 +
53 64 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
54 65 {
55 66 /*
... ...