openlayers.htm 14.3 KB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Category" content="I3Geo Mapa interativo MMA">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
    <style type="text/css">
        .olControlEditingToolbar  {
            float:left;
            right: 0px;
            height:30px; 
            width: 150px;
        }
</style>
<title>MMA - Mapa interativo</title>
<!-- Leitura dos programas javaScript e estilos. Pode-se ler os arquivos não compactados, bastando excluir a palavra _compacto -->
<script type="text/javascript" src="../classesjs/i3geo.js"></script>
<script type="text/javascript" src="../pacotes/openlayers/OpenLayers.js"></script>
<!--
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxSieGwtcPDeiUtRiq7Xa63cyLppcxTVYXnVlPwveOe-sXuXfpBeNpL6pA" type="text/javascript"></script>
-->
<!--
    chave na producao= ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxSieGwtcPDeiUtRiq7Xa63cyLppcxTVYXnVlPwveOe-sXuXfpBeNpL6pA
    chave no desenvolvimento = ABQIAAAAg9kA9xQlYqK9iBDKaeTpgxQ_qvn5wqSkbcx9uoqrWGnUcZ7lqhRVzkJwzeDN3nQJheG7FjoxyruBIQ
-->

<!-- formatação alternativa das janelas internas, para usar é só descomentar
<link rel="stylesheet" type="text/css" href="../css/panel-aqua.css" />
-->
</head>
<body id=i3geo onmouseover="javascript:this.onmousemove=processevent1" >
<center>
<table id='mst' width=100% cellspacing='0'>
<tr style="border:0px"><td colspan=2 style="background-image:url('../imagens/visual/default/cabeca.png');height:10px"></td></tr>
<tr>
 <td class=tdbranca id=contemFerramentas style="border:0px;vertical-align:top;width:268px;text-align:left;">
  <table width=100% cellspacing=0 cellpadding=0 >
   <tr><td style="border-bottom:0px solid rgb(230,230,230);height:45px">
    <!-- Guias principais, não mude o ID, apenas o nome se for desejado -->
    <div style="top:0px;cursor:pointer;">
	 <div id=guia1 class=guia value="Mostra os temas atualmente inseridos no mapa e que podem estar visíveis ou não." >&nbsp;Temas&nbsp;</div>
	 <div id=guia2 class=guia value="Mostra a lista de temas disponíveis no servidor de dados, possibilitando que novos temas sejam adicionados ao mapa.">&nbsp;Adiciona&nbsp;</div>
	 <div id=guia4 class=guia value="Mostra a legnda do mapa atual." >&nbsp;Legenda&nbsp;</div>
	 <div id=guia5 class=guia value="Lista mapas já preparados, com temáticas específicas,que podem ser abertos no I3Geo">&nbsp;Mapas&nbsp;</div>
    </div>
   </td></tr>
  </table>
  <div id='guia1obj' ><div id=listaTemas ></div></div>
  <div id='guia2obj' style='display:none;'>Aguarde...<img alt="" src="../imagens/branco.gif" width=248 /></div>
  <div id='guia4obj' style='display:none;text-align:left'><div id='legenda' style='text-align:left'></div></div>
  <div id='guia5obj' style='display:none;text-align:left'><div id='banners' style='overflow:auto;text-align:left'>Aguarde...</div></div>
 </td>
 <td class=verdeclaro style="vertical-align:top;border-width:0px;">
  <table width="100%" style="vertical-align:top;">
   <!-- Corpo do mapa. Pode ser reposicionado, mas não mude os IDs -->
   <tr><td><div id="panel" class="olControlEditingToolbar"></div></td></tr>
   <tr><td  class=verdeclaro id=contemImg >
    <div id=openlayers style="text-align:left;background-image:url('../imagens/i3geo1bw.jpg')"></div>
   </td></tr>
  </table>
 </td>
 </tr>
<tr style="border:0px"><td colspan=2 style="background-image:url('../imagens/visual/default/rodape.png');height:10px"></td></tr>
</table>
<a style=text-align:center;color:white href="mailto:edmar.moretti@mma.gov.br">Cr&iacute;ticas e sugest&otilde;es</a>
</center>
<div id=barraDeBotoes1 style='display:none'> 
   <table title="info" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="info" alt="" src="../imagens/branco.gif" id='identifica'/></td></tr></table>
   <table title="reinicia" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="reinicia" alt="" src="../imagens/branco.gif" id='reinicia'/></td></tr></table>
   <table title="extensao" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img  title="extensao" alt="" src="../imagens/branco.gif" id="exten"/></td></tr></table>
   <table title="mede" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="mede" alt="" src="../imagens/branco.gif" id='mede'/></td></tr></table> 
   <table title="insere xy" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="insere xy" alt="" src="../imagens/branco.gif" id='inserexy'/></td></tr></table> 
   <table title="insere grafico" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="insere grafico" alt="" src="../imagens/branco.gif" id='inseregrafico'/></td></tr></table> 
   <table title="selecao" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="selecao" alt="" src="../imagens/branco.gif" id='selecao'/></td></tr></table>
   <table title="texto" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="texto" alt="" src="../imagens/branco.gif" id='textofid'/></td></tr></table>
   <table title="imprimir" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="imprimir" alt="" src="../imagens/branco.gif" id='imprimir'/></td></tr></table>   
   <table title="lente" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="lente" alt="" src="../imagens/branco.gif" id='lentei'/></td></tr></table>
   <table title="busca na wikipedia" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="busca na wikipedia" alt="" src="../imagens/branco.gif" id='wiki'/></td></tr></table>
   <table title="google" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="google" alt="" src="../imagens/branco.gif" id='google'/></td></tr></table>
   <table title="scielo" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="scielo" alt="" src="../imagens/branco.gif" id='scielo'/></td></tr></table>
   <table title="confluencias" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="confluencias" alt="" src="../imagens/branco.gif" id='confluence'/></td></tr></table>
   <table id=botao3d title="3d - experimental" style="width:100%;border-bottom:3px solid rgb(255,255,255);"><tr><td style='background-color:rgb(250,250,250);'><img title="3d" alt="" src="../imagens/branco.gif" id='v3d'/></td></tr></table>
</div>
<div id=botoesadic ></div>
<!-- Variáveis globais e inicialização do mapa-->
<script type="text/javascript">
/*
Title: OpenLayers (experimental)

Abre o i3geo com a navegação controlada pelo OpenLayers.

File: i3geo/aplicmap/openlayers.htm

Exemplo:

http://<host>/i3geo/ms_criamapa.php?interface=openlayers.htm

*/
g_locaplic = "http://"+window.location.host+"/i3geo";
g_localimg = "http://"+window.location.host+"/i3geo/imagens";
g_barraFerramentas1 = "nao"
g_barraFerramentas2 = "nao"
g_mapaRefDisplay = "none"
g_janelaMen = "nao";
g_mostraRosa = "nao"
g_opcoesTemas = "sim";
g_3dmap = "3dmap.map";

/*
Function: criaOL

Cria e mantem os objetos necessários ao OpenLayers

Parameters:

posfixo - codigo que será incluido no nome da chamada do web service, forçando o redesenho do mapa.
*/
function criaOL(posfixo)
{
	var url = window.location.protocol+"//"+window.location.host+objmapa.locmapserv+"?"
	url += "map="+objmapa.mapfile+"&mode=map&rand="+posfixo

	//var url1 = window.location.protocol+"//"+window.location.host+"/i3geo/ogc.php?tema=openlayers?"
	//url1 += "&rand="+posfixo

	
	objmapa.OL = new OpenLayers.Map('openlayers', { controls: [] });

	//
	//layers
	//
	//var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic","http://wms.jpl.nasa.gov/wms.cgi", {layers: "modis,global_mosaic"},{isBaseLayer: false, opacity: 0.6});
	//jpl_wms.setVisibility(false);
	//objmapa.OL.addLayer(jpl_wms);
	
	var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0",{layers: 'basic'},{'buffer':0},{isBaseLayer: false, opacity: 0.6} );
	//ol_wms.setVisibility(false);
	//objmapa.OL.addLayer(ol_wms);
	
	objmapa.OLI3Geoc = new OpenLayers.Layer.WMS( "Temas I3Geo", url,{layers:'estadosl'},{'buffer':0},{isBaseLayer:true, opacity: 1});
	objmapa.OLI3Geoc.setVisibility(true);
	objmapa.OL.addLayer(objmapa.OLI3Geoc);	

	/*
	objmapa.OLI3Geo = new OpenLayers.Layer.WMS( "I3Geo", url1,{layers:'openlayers'},{isBaseLayer:true, opacity: 0});
	objmapa.OLI3Geo.setVisibility(true);
	objmapa.OL.addLayer(objmapa.OLI3Geo);
	*/
	/*
	var ol_sat = new OpenLayers.Layer.Google( "Google" , {type: 'G_HYBRID_MAP', 'maxZoomLevel':36},{isBaseLayer: false, opacity: .5} );
	ol_sat.setVisibility(false);
	objmapa.OL.addLayer(ol_sat);
	ol_sat.div.style.left="0px"
	*/
    vlayer = new OpenLayers.Layer.Vector( "Editável" );
    objmapa.OL.addLayer(vlayer);
    
    //
    //registra os eventos de captura das coordenadas no mapa
    //
	objmapa.OL.events.register("mousemove", objmapa.OL, function(e)
	{
		//pega as coordenadas do cursor
		if (navm)
		{var p = new OpenLayers.Pixel(e.x,e.y);}
		else
		{var p = e.xy;}
		//altera o indicador de localizacao
		var lonlat = objmapa.OL.getLonLatFromViewPortPx(p);
		var d = convdmsf(lonlat.lon,lonlat.lat);
		objposicaomouse.x = p.x;
		objposicaomouse.y = p.y;
		objposicaocursor.ddx = lonlat.lon;
		objposicaocursor.ddy = lonlat.lat;
		objposicaocursor.telax = p.x;
		objposicaocursor.telay = p.y;
		var dc = $i("i3geo");
		if ($i("openlayers_OpenLayers_Container")){var dc = $i("openlayers_OpenLayers_Container");}
		while (dc.offsetParent)
		{
			dc = dc.offsetParent;
			objposicaocursor.telax = objposicaocursor.telax + dc.offsetLeft;
			objposicaocursor.telay = objposicaocursor.telay + dc.offsetTop;
		}
		movecursor();
	})
	//
	//ativa as operações de click no mapa do I3Geo
	//
	//ativaClicks($i("openlayers_OpenLayers_ViewPort")); //_OpenLayers_Container"))
	//objmapa.OL.events.register("click", objmapa.OL, "");
	//
	//ferramentas
	//
	var pz = new OpenLayers.Control.PanZoomBar({numZoomLevels: 5});
	objmapa.OL.addControl(pz);
	pz.div.style.zIndex = 5000;
	$i("OpenLayers_Control_PanZoom_pandown").style.top=parseInt($i("OpenLayers_Control_PanZoom_pandown").style.top)+5
	$i("OpenLayers_Control_PanZoom_panup").style.top=parseInt($i("OpenLayers_Control_PanZoom_panup").style.top)+5
	$i("OpenLayers_Control_PanZoom_panleft").style.top=parseInt($i("OpenLayers_Control_PanZoom_panleft").style.top)+5
	$i("OpenLayers_Control_PanZoom_panright").style.top=parseInt($i("OpenLayers_Control_PanZoom_panright").style.top)+5
	var navc = new OpenLayers.Control.NavToolbar();
	objmapa.OL.addControl(navc);
	navc.div.style.left="8px";
	navc.div.style.top="-20px";
	navc.div.onclick = function()
	{
		mudaiconf("pan");
		g_operacao="navega"
	};

    zb = new OpenLayers.Control.ZoomToMaxExtent();
    var botoesadic = new OpenLayers.Control.Panel();

    botoesadic.addControls([
       new OpenLayers.Control.ZoomToMaxExtent()
    ]);
    objmapa.OL.addControl(botoesadic);
    botoesadic.div.style.left="10px";
    botoesadic.div.style.top=parseInt($i("OpenLayers_Control_PanZoom_zoomout").style.top)+77
	
	objmapa.OL.addControl(new OpenLayers.Control.LayerSwitcher());
	
	objmapa.OL.addControl(new OpenLayers.Control.Scale("escalanumerica"));

            var container = document.getElementById("panel");
            var panel = new OpenLayers.Control.EditingToolbar(
                vlayer, {div: container}
            );
            objmapa.OL.addControl(panel);	
	//objmapa.OL.addControl(new OpenLayers.Control.EditingToolbar(vlayer));
	
	objmapa.OL.addControl(new OpenLayers.Control.KeyboardDefaults());	

	//
	//overview
	//
	var ol_overview = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0",{layers: 'basic'});
	var options = {layers: [ol_overview],minRatio: 8,maxRatio: 128};
	var overview = new OpenLayers.Control.OverviewMap(options);
	objmapa.OL.addControl(overview);
	if (posfixo != "inicia")
	{
		atualizaOL()
	}
	if($i("layersDiv"))
	{
		var linhas = $i("layersDiv").getElementsByTagName("div");
		var i = 0;
		do
		{
			linhas[i].style.textAlign = "left";
			var i = i + 1;
		}
		while(i < linhas.length)
	}
	var i = 0
	while (i < 10)
	{
		if($i("guia"+i+"obj"))
		{
			$i("guia"+i+"obj").style.height = parseInt($i("guia"+i+"obj").style.height) - 35
		}
		i = i + 1
	}
}
/*
Function: atualizaOL

Atualiza o OpenLayers, redesenhadno o mapa
*/
function atualizaOL()
{
	var temp = function(retorno)
	{
		eval(retorno.data.parametros);
		objmapa.atualizaListaTemas(temas);
		objmapa.temas = temas;
	}
	//atualiza a lista de temas atuais
	var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=openlayers&g_sid="+g_sid;
	var cp = new cpaint();
	//cp.set_debug(2)
	cp.set_response_type("JSON");
	cp.call(p,"openlayers",temp);
}
/*
Function: initOL

Inicializa o openLayers
*/
function initOL()
{
	var temp = function(retorno)
	{
		objmapa.locmapserv = retorno.data.locmapserv;
		objmapa.mapfile = retorno.data.mapfile;
		criaOL("inicia");
		var m = retorno.data.mapext.split(",")
		var b = new OpenLayers.Bounds(parseInt(m[0]),parseInt(m[1]),parseInt(m[2]),parseInt(m[3]))
		objmapa.OL.zoomToExtent(b)
		var x = 150;
		if ($i("maisBotoes1"))
		{YAHOO.janelaBotoes1.xp.panel.moveTo(x,4);}
		if ($i("maisBotoes2"))
		{YAHOO.janelaBotoes2.xp.panel.moveTo(x+40,4);}
	}
	var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=openlayers&g_sid="+g_sid;
	var cp = new cpaint();
	//cp.set_debug(2)
	cp.set_response_type("JSON");
	cp.call(p,"openlayers",temp);
}
objmapa = new Mapa();
objmapa.finaliza = "initOL()";
objmapa.inicializa();
</script>

</body>
</html>