Commit 8a2751f17e6e3060845a8c066c63623600eab602

Authored by Edmar Moretti
1 parent 354c4a69

Conclusão do mashup OpenLayers

classesjs/classe_arvoredetemas.js
@@ -118,7 +118,7 @@ i3GEO.arvoreDeTemas = { @@ -118,7 +118,7 @@ i3GEO.arvoreDeTemas = {
118 Tipo: 118 Tipo:
119 {Numeric} 119 {Numeric}
120 */ 120 */
121 - FATORESTRELA: "1", 121 + FATORESTRELA: "50",
122 /* 122 /*
123 Propriedade: INCLUISISTEMAS 123 Propriedade: INCLUISISTEMAS
124 124
mashups/openlayers.css
@@ -82,6 +82,12 @@ background-position:-377px 0; @@ -82,6 +82,12 @@ background-position:-377px 0;
82 .olControlEditingToolbar .capturaItemActive { 82 .olControlEditingToolbar .capturaItemActive {
83 background-position:-377px -28px; 83 background-position:-377px -28px;
84 } 84 }
  85 +.olControlEditingToolbar .procuraItemInactive {
  86 +background-position:-406px 0;
  87 +}
  88 +.olControlEditingToolbar .procuraItemActive {
  89 +background-position:-406px -28px;
  90 +}
85 91
86 92
87 93
mashups/openlayers.js.php 0 → 100644
@@ -0,0 +1,499 @@ @@ -0,0 +1,499 @@
  1 +<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/javascript"); ?>$i = function(id){return document.getElementById(id);};
  2 +navn = false;
  3 +//seta as variáveis navn e navm
  4 +var navn = false;
  5 +var navm = false;
  6 +var app = navigator.appName.substring(0,1);
  7 +if (app==='N'){navn=true;}else{navm=true;}
  8 +
  9 +OpenLayers.ImgPath = "../pacotes/openlayers/img/"
  10 +OpenLayers.Lang.setCode("pt-BR");
  11 +i3GEOOL = {
  12 + ol_mma: new OpenLayers.Layer.WMS(
  13 + "Base cartográfica",
  14 + "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&",
  15 + {layers:'baseraster',SRS:'EPSG:4291'}
  16 + ),
  17 + ol_wms: new OpenLayers.Layer.WMS.Untiled(
  18 + "OpenLayers WMS",
  19 + "http://labs.metacarta.com/wms/vmap0",
  20 + {layers: 'basic'}
  21 + ),
  22 + jpl_wms: new OpenLayers.Layer.WMS(
  23 + "NASA Global Mosaic",
  24 + "http://t1.hypercube.telascience.org/cgi-bin/landsat7",
  25 + {layers: "landsat7"}
  26 + ),
  27 + layergrafico: new OpenLayers.Layer.Vector("Edição"),
  28 + layersIniciais: <?php echo implode(",",$objOpenLayers); ?>,
  29 + botoes: <?php echo $botoes; ?>,
  30 + mapa: new OpenLayers.Map('i3geoMapa', {
  31 + controls: [
  32 + <?php echo implode(",",$objControles); ?>
  33 + ],
  34 + numZoomLevels: <?php echo $numzoomlevels;?>,
  35 + maxExtent: new OpenLayers.Bounds(<?php echo $maxextent;?>)
  36 + }),
  37 + inicia: function(){
  38 + i3GEOOL.jpl_wms.setVisibility(false);
  39 + i3GEOOL.ol_wms.setVisibility(false);
  40 + i3GEOOL.mapa.addLayers([
  41 + i3GEOOL.ol_mma,
  42 + i3GEOOL.ol_wms,
  43 + i3GEOOL.jpl_wms,
  44 + i3GEOOL.layersIniciais,
  45 + i3GEOOL.layergrafico
  46 + ]);
  47 + i3GEOOL.mapa.zoomToMaxExtent();
  48 + i3GEOOL.coordenadas();
  49 + i3GEOOL.criaJanelaBusca();
  50 + i3GEOOL.criaJanelaAtivaTema();
  51 + i3GEOOL.criaBotoes(i3GEOOL.botoes);
  52 + },
  53 + layersLigados: function(){
  54 + var layers = i3GEOOL.mapa.layers;
  55 + var nlayers = layers.length;
  56 + var ins = new Array();
  57 + for(i=0;i<nlayers;i++){
  58 + if(layers[i].isBaseLayer == false){
  59 + ins.push(layers[i]);
  60 + }
  61 + }
  62 + return ins;
  63 + },
  64 + coordenadas: function(){
  65 + //
  66 + //substitui o controle que mostra as coordenadas
  67 + //
  68 + var idcoord = i3GEOOL.mapa.getControlsBy("separator"," ");
  69 + if(idcoord[0]){
  70 + i3GEOOL.mapa.events.register("mousemove", i3GEOOL.mapa, function(e){
  71 + var p,lonlat,d,dc;
  72 + if (navm)
  73 + {p = new OpenLayers.Pixel(e.x,e.y);}
  74 + else
  75 + {p = e.xy;}
  76 + //altera o indicador de localizacao
  77 + lonlat = i3GEOOL.mapa.getLonLatFromPixel(p);
  78 + d = i3GEO.calculo.dd2dms(lonlat.lon,lonlat.lat);
  79 + try{
  80 + $i(idcoord[0].id).innerHTML = "Long: "+d[0]+"<br>Lat: "+d[1];
  81 + }
  82 + catch(e){
  83 + if(typeof(console) !== 'undefined'){console.error(e);}
  84 + }
  85 + });
  86 + }
  87 + },
  88 + criaJanelaBusca: function(){
  89 + var layers = i3GEOOL.layersLigados();
  90 + var nlayers = layers.length;
  91 + var combo = "<select id=i3GEOOLlistaTemasBusca ><option value=''>----</option>";
  92 + for(i=0;i<nlayers;i++){
  93 + combo += "<option value='"+i+"' >"+layers[i].name+"</option>";
  94 + }
  95 + combo += "</select>";
  96 + var ins = "<div class=paragrafo >Tema:<br>"+combo;
  97 + ins += "<br>Item:<br><span id=i3GEOOLcomboitens ></span>";
  98 + ins += "<br>Procurar por:<br><input type=text size=20 id=i3GEOOLpalavraBusca >";
  99 + ins += "<br><br><input type=button value='Procurar' id='i3GEOOLbotaoBusca' ></div>";
  100 + ins += "<br>Resultado:<br><span id=i3GEOOLcomboresultado ></span>";
  101 + YAHOO.namespace("procura.container");
  102 + YAHOO.procura.container.panel = new YAHOO.widget.Panel("panelprocura", {zIndex:2000, iframe:false, width:"250px", visible:false, draggable:true, close:true } );
  103 + YAHOO.procura.container.panel.setHeader("Encontre no mapa");
  104 + YAHOO.procura.container.panel.setBody(ins);
  105 + YAHOO.procura.container.panel.setFooter("");
  106 + YAHOO.procura.container.panel.render(document.body);
  107 + YAHOO.procura.container.panel.center();
  108 + document.getElementById("i3GEOOLbotaoBusca").onclick = function(){
  109 + var layer = i3GEOOL.layerAtivo();
  110 + var item = document.getElementById("i3GEOOLbuscaItem").value;
  111 + var palavra = document.getElementById("i3GEOOLpalavraBusca").value;
  112 + if(item == "" || palavra == "")
  113 + {alert("Escolha o item e o texto de busca");return;}
  114 + i3GEOOL.busca(layer,item,palavra,"i3GEOOLcomboresultado");
  115 + };
  116 + document.getElementById("i3GEOOLlistaTemasBusca").onchange = function(){
  117 + i3GEOOL.ativaTema(this.value);
  118 + document.getElementById("i3GEOOLcomboitens").innerHTML = "...";
  119 + i3GEOOL.listaItens(i3GEOOL.layerAtivo(),"i3GEOOLcomboitens","i3GEOOLbuscaItem");
  120 + };
  121 + },
  122 + criaJanelaAtivaTema: function(){
  123 + var layers = i3GEOOL.layersLigados();
  124 + var nlayers = layers.length;
  125 + var combo = "<select id=i3GEOOLlistaTemasAtivos >";
  126 + for(i=0;i<nlayers;i++){
  127 + combo += "<option value='"+i+"' >"+layers[i].name+"</option>";
  128 + }
  129 + combo += "</select>";
  130 + YAHOO.namespace("temaativo.container");
  131 + YAHOO.temaativo.container.panel = new YAHOO.widget.Panel("paneltemaativo", {zIndex:2000, iframe:false, width:"250px", visible:false, draggable:true, close:true } );
  132 + YAHOO.temaativo.container.panel.setHeader("Tema ativo");
  133 + YAHOO.temaativo.container.panel.setBody(combo);
  134 + YAHOO.temaativo.container.panel.setFooter("");
  135 + YAHOO.temaativo.container.panel.render(document.body);
  136 + YAHOO.temaativo.container.panel.center();
  137 + document.getElementById("i3GEOOLlistaTemasAtivos").onchange = function(){
  138 + if(botaoIdentifica){
  139 + botaoIdentifica.layers = [i3GEOOL.layersLigados()[this.value]];
  140 + }
  141 + };
  142 + },
  143 + ativaTema: function(id){
  144 + document.getElementById("i3GEOOLlistaTemasAtivos").value = id;
  145 + },
  146 + layerAtivo: function(){
  147 + var id = document.getElementById("i3GEOOLlistaTemasAtivos").value;
  148 + return i3GEOOL.layersLigados()[id];
  149 + },
  150 + listaItens: function(layer,idonde,idobj){
  151 + if(!layer){return;}
  152 + if(!layer.params){return;}
  153 + var u = layer.url+"&request=describefeaturetype&service=wfs&version=1.0.0";
  154 + u += "&typename="+layer.params.LAYERS;
  155 + document.body.style.cursor="wait";
  156 + document.getElementById("i3geoMapa").style.cursor = "wait";
  157 + OpenLayers.Request.issue({
  158 + method: "GET",
  159 + url: u,
  160 + callback: function(retorno){
  161 + document.body.style.cursor="default";
  162 + document.getElementById("i3geoMapa").style.cursor = "default";
  163 + var fromgml = new OpenLayers.Format.WFSDescribeFeatureType({
  164 + geometryName: "msGeometry"
  165 + });
  166 + var gml = fromgml.read(retorno.responseText);
  167 + var prop = gml.featureTypes[0].properties;
  168 + var nprop = prop.length;
  169 + var itens = new Array();
  170 + var combo = "<select id="+idobj+" ><option value=''>----</option>";
  171 + for(i = 0;i < nprop; i++){
  172 + combo += "<option value="+prop[i].name+" >"+prop[i].name+"</option>";
  173 + }
  174 + combo += "</select>";
  175 + document.getElementById(idonde).innerHTML = combo;
  176 +
  177 + },
  178 + failure: function(){
  179 + document.body.style.cursor="default";
  180 + document.getElementById("i3geoMapa").style.cursor = "default";
  181 + alert("Erro");
  182 + }
  183 + })
  184 + },
  185 + busca: function(layer,item,palavra,onde){
  186 + document.body.style.cursor="wait";
  187 + document.getElementById("i3geoMapa").style.cursor = "wait";
  188 + var u = layer.url+"&request=getfeature&service=wfs&version=1.0.0";
  189 + u += "&OUTPUTFORMAT=gml2&typename="+layer.params.LAYERS;
  190 + u += "&filter=<Filter><PropertyIsLike wildcard=* singleChar=. escape=! ><PropertyName>"+item+"</PropertyName><Literal>*"+palavra+"*</Literal></PropertyIsLike></Filter>";
  191 + document.body.style.cursor="wait";
  192 + document.getElementById("i3geoMapa").style.cursor = "wait";
  193 + document.getElementById(onde).innerHTML = "...";
  194 + OpenLayers.Request.issue({
  195 + method: "GET",
  196 + url: u,
  197 + callback: function(retorno){
  198 + document.body.style.cursor="default";
  199 + document.getElementById("i3geoMapa").style.cursor = "default";
  200 + var fromgml = new OpenLayers.Format.GML({
  201 + geometryName: "msGeometry"
  202 + });
  203 + var gml = fromgml.read(retorno.responseText);
  204 + var ngml = gml.length;
  205 + var ins = "<select onchange='i3GEOOL.zoomPara(this.value)'>";
  206 + ins += "<option value=''>---</option>";
  207 + for(i=0;i<ngml;i++){
  208 + eval("var valor = gml[i].data."+item);
  209 + var bounds = gml[i].geometry.getBounds();
  210 + var bounds = bounds.toBBOX();
  211 + ins += "<option value='"+bounds+"'>"+valor+"</option>";
  212 + }
  213 + ins += "</select>";
  214 + document.getElementById(onde).innerHTML = ins;
  215 + },
  216 + failure: function(){
  217 + document.body.style.cursor="default";
  218 + document.getElementById("i3geoMapa").style.cursor = "default";
  219 + alert("Erro");
  220 + }
  221 + })
  222 + },
  223 + zoomPara: function(bbox){
  224 + var b = new OpenLayers.Bounds.fromString(bbox);
  225 + i3GEOOL.mapa.zoomToExtent(b);
  226 + },
  227 + mostraLegenda: function(){
  228 + var layers = i3GEOOL.layersLigados();
  229 + var nlayers = layers.length;
  230 + var ins = "";
  231 + for(i=0;i<nlayers;i++){
  232 + var url = layers[i].getFullRequestString({"request":"getlegendgraphic"});
  233 + url = url.replace("LAYERS","LAYER");
  234 + ins += "<img src='"+url+"' /><br>";
  235 + }
  236 + var w = window.open()
  237 + w.document.write(ins)
  238 + w.document.close();
  239 + },
  240 + captura: function(lonlat){
  241 + var layers = [i3GEOOL.layerAtivo()];
  242 + var u = layers[0].url+"&request=getfeature&service=wfs&version=1.0.0";
  243 + u += "&OUTPUTFORMAT=gml2&typename="+layers[0].params.LAYERS;
  244 + u += "&filter=<Filter><Intersect><PropertyName>Geometry</PropertyName><gml:Point><gml:coordinates>"+lonlat+"</gml:coordinates></gml:Point></Intersect></Filter>";
  245 + document.body.style.cursor="wait";
  246 + document.getElementById("i3geoMapa").style.cursor = "wait";
  247 + OpenLayers.Request.issue({
  248 + method: "GET",
  249 + url: u,
  250 + callback: function(retorno){
  251 + document.body.style.cursor="default";
  252 + document.getElementById("i3geoMapa").style.cursor = "default";
  253 + var fromgml = new OpenLayers.Format.GML({
  254 + geometryName: "msGeometry"
  255 + });
  256 + var gml = fromgml.read(retorno.responseText);
  257 + i3GEOOL.layergrafico.addFeatures(gml);
  258 + },
  259 + failure: function(){
  260 + document.body.style.cursor="default";
  261 + document.getElementById("i3geoMapa").style.cursor = "default";
  262 + alert("Erro");
  263 + }
  264 + })
  265 + },
  266 + criaBotoes: function(botoes){
  267 + var sketchSymbolizers = {
  268 + "Point": {
  269 + pointRadius: 4,
  270 + graphicName: "square",
  271 + fillColor: "white",
  272 + fillOpacity: 1,
  273 + strokeWidth: 1,
  274 + strokeOpacity: 1,
  275 + strokeColor: "#333333"
  276 + },
  277 + "Line": {
  278 + strokeWidth: 3,
  279 + strokeOpacity: 1,
  280 + strokeColor: "#666666",
  281 + strokeDashstyle: "dash"
  282 + },
  283 + "Polygon": {
  284 + strokeWidth: 2,
  285 + strokeOpacity: 1,
  286 + strokeColor: "#666666",
  287 + fillColor: "white",
  288 + fillOpacity: 0.3
  289 + }
  290 + };
  291 + var style = new OpenLayers.Style();
  292 + style.addRules([
  293 + new OpenLayers.Rule({symbolizer: sketchSymbolizers})
  294 + ]);
  295 + var styleMap = new OpenLayers.StyleMap({"default": style});
  296 +
  297 + var adiciona = false;
  298 + var controles = new Array();
  299 + var panel = new OpenLayers.Control.Panel({
  300 + displayClass: "olControlEditingToolbar noprint"
  301 + });
  302 + if(botoes.procura==true){
  303 + var button = new OpenLayers.Control.Button({
  304 + displayClass: "procura",
  305 + trigger: function(){YAHOO.procura.container.panel.show();},
  306 + title: "Procurar"
  307 + });
  308 + controles.push(button);
  309 + var adiciona = true;
  310 + }
  311 + if(botoes.pan==true){
  312 + controles.push(new OpenLayers.Control.Navigation({title: "Deslocar",displayClass:"pan"}));
  313 + var adiciona = true;
  314 + }
  315 + if(botoes.zoombox==true){
  316 + controles.push(new OpenLayers.Control.ZoomBox({displayClass: "zoombox",title: "Zoom"}));
  317 + var adiciona = true;
  318 + }
  319 + if(botoes.zoomtot==true){
  320 + var button = new OpenLayers.Control.Button({
  321 + displayClass: "zoomtot",
  322 + trigger: function(){i3GEOOL.mapa.zoomToMaxExtent();},
  323 + title: "Ajusta extens&atilde;o"
  324 + });
  325 + controles.push(button);
  326 + var adiciona = true;
  327 + }
  328 + if(botoes.legenda==true){
  329 + var button = new OpenLayers.Control.Button({
  330 + displayClass: "legenda",
  331 + trigger: function(){i3GEOOL.mostraLegenda();},
  332 + title: "Legenda"
  333 + });
  334 + controles.push(button);
  335 + var adiciona = true;
  336 + }
  337 + if(botoes.distancia==true){
  338 + var button = new OpenLayers.Control.Measure(
  339 + OpenLayers.Handler.Path,
  340 + {
  341 + handlerOptions: {layerOptions: {styleMap: styleMap}},
  342 + persist: true,
  343 + displayClass: "distancia",
  344 + title: "Distância"
  345 + }
  346 + );
  347 + button.events.on({
  348 + "measure": function(event){
  349 + var units = event.units;
  350 + var measure = event.measure;
  351 + alert("Distância: " + measure.toFixed(3) + " " + units);
  352 + },
  353 + });
  354 + controles.push(button);
  355 + var adiciona = true;
  356 + }
  357 + if(botoes.area==true){
  358 + var button = new OpenLayers.Control.Measure(
  359 + OpenLayers.Handler.Polygon,
  360 + {
  361 + handlerOptions: {layerOptions: {styleMap: styleMap}},
  362 + persist: true,
  363 + displayClass: "area",
  364 + title: "Área"
  365 + }
  366 + );
  367 + button.events.on({
  368 + "measure": function(event){
  369 + var units = event.units;
  370 + var measure = event.measure;
  371 + alert("Área: " + measure.toFixed(3) + " " + units + " quadrados");
  372 + },
  373 + });
  374 + controles.push(button);
  375 + var adiciona = true;
  376 + }
  377 + if(botoes.identifica==true){
  378 + botaoIdentifica = new OpenLayers.Control.WMSGetFeatureInfo({
  379 + maxFeatures:1,
  380 + infoFormat:'text/plain', //'application/vnd.ogc.gml',
  381 + layers: [i3GEOOL.layerAtivo()],
  382 + queryVisible: true,
  383 + title: "Identificar",
  384 + displayClass: "identifica",
  385 + eventListeners: {
  386 + getfeatureinfo: function(event) {
  387 + var lonlat = i3GEOOL.mapa.getLonLatFromPixel(event.xy);
  388 + var lonlattexto = "<hr><pre><span style=color:blue;cursor:pointer onclick='i3GEOOL.captura(\""+lonlat.lon+","+lonlat.lat+"\")'>captura</span></pre>";
  389 + i3GEOOL.mapa.addPopup(new OpenLayers.Popup.FramedCloud(
  390 + "chicken",
  391 + i3GEOOL.mapa.getLonLatFromPixel(event.xy),
  392 + null,
  393 + lonlattexto+"<pre>"+event.text+"</pre>",
  394 + null,
  395 + true
  396 + ));
  397 + },
  398 + activate: function(){
  399 + YAHOO.temaativo.container.panel.show();
  400 + }
  401 + }
  402 + });
  403 + //button.events.register("getfeatureinfo", this, showInfo);
  404 + controles.push(botaoIdentifica);
  405 + var adiciona = true;
  406 + }
  407 + if(botoes.linha==true){
  408 + button = new OpenLayers.Control.DrawFeature(
  409 + i3GEOOL.layergrafico,
  410 + OpenLayers.Handler.Path,
  411 + {
  412 + displayClass: "linha",
  413 + title: "digitalizar linha"
  414 + }
  415 + );
  416 + controles.push(button);
  417 + var adiciona = true;
  418 + }
  419 + if(botoes.ponto==true){
  420 + button = new OpenLayers.Control.DrawFeature(
  421 + i3GEOOL.layergrafico,
  422 + OpenLayers.Handler.Point,
  423 + {
  424 + displayClass: "ponto",
  425 + title: "digitalizar ponto"
  426 + }
  427 + );
  428 + controles.push(button);
  429 + var adiciona = true;
  430 + }
  431 + if(botoes.poligono==true){
  432 + button = new OpenLayers.Control.DrawFeature(
  433 + i3GEOOL.layergrafico,
  434 + OpenLayers.Handler.Polygon,
  435 + {
  436 + displayClass: "poligono",
  437 + title: "digitalizar polígono"
  438 + }
  439 + );
  440 + controles.push(button);
  441 + var adiciona = true;
  442 + }
  443 + if(botoes.edita==true){
  444 + button = new OpenLayers.Control.ModifyFeature(
  445 + i3GEOOL.layergrafico,
  446 + {
  447 + displayClass: "edita",
  448 + title: "edita elemento"
  449 + }
  450 + );
  451 + controles.push(button);
  452 + var adiciona = true;
  453 + }
  454 + //botao de seleção
  455 + if(botoes.apaga==true){
  456 + button = new OpenLayers.Control.SelectFeature(
  457 + i3GEOOL.layergrafico,
  458 + {
  459 + displayClass: "selecao",
  460 + title: "seleciona elemento",
  461 + clickout: true,
  462 + toggle: true,
  463 + multiple: false,
  464 + hover: false,
  465 + toggleKey: "ctrlKey", // ctrl key removes from selection
  466 + multipleKey: "shiftKey", // shift key adds to selection
  467 + box: false
  468 + }
  469 + );
  470 + controles.push(button);
  471 + var adiciona = true;
  472 + }
  473 + if(botoes.apaga==true){
  474 + var button = new OpenLayers.Control.Button({
  475 + displayClass: "apaga",
  476 + trigger: function(){
  477 + if(i3GEOOL.layergrafico.selectedFeatures.length > 0){
  478 + var x = window.confirm("Exclui os elementos selecionados?");
  479 + if(x)
  480 + {i3GEOOL.layergrafico.removeFeatures(i3GEOOL.layergrafico.selectedFeatures);}
  481 + }
  482 + else
  483 + {alert("Selecione pelo menos um elemento");}
  484 + },
  485 + title: "Apaga selecionados"
  486 + });
  487 + controles.push(button);
  488 + var adiciona = true;
  489 + }
  490 + //
  491 + //adiciona o painel ao mapa se alguma op��o foi inserida
  492 + //
  493 + if(adiciona == true){
  494 + panel.addControls(controles);
  495 + i3GEOOL.mapa.addControl(panel);
  496 + }
  497 + }
  498 +};
  499 +<?php if(extension_loaded('zlib')){ob_end_flush();}?>
0 \ No newline at end of file 500 \ No newline at end of file
mashups/openlayers.php
@@ -90,7 +90,7 @@ if(!isset($botoes)){ @@ -90,7 +90,7 @@ if(!isset($botoes)){
90 $objBotoes[] = "'poligono':true"; 90 $objBotoes[] = "'poligono':true";
91 $objBotoes[] = "'edita':true"; 91 $objBotoes[] = "'edita':true";
92 $objBotoes[] = "'apaga':true"; 92 $objBotoes[] = "'apaga':true";
93 - $objBotoes[] = "'captura':false"; 93 + $objBotoes[] = "'procura':true";
94 } 94 }
95 else{ 95 else{
96 $botoes = str_replace(" ",",",$botoes); 96 $botoes = str_replace(" ",",",$botoes);
@@ -120,8 +120,8 @@ else{ @@ -120,8 +120,8 @@ else{
120 {$objBotoes[] = "'edita':true";} 120 {$objBotoes[] = "'edita':true";}
121 if(in_array("apaga",$botoes)) 121 if(in_array("apaga",$botoes))
122 {$objBotoes[] = "'apaga':true";} 122 {$objBotoes[] = "'apaga':true";}
123 - if(in_array("captura",$botoes))  
124 - {$objBotoes[] = "'captura':false";} 123 + if(in_array("procura",$botoes))
  124 + {$objBotoes[] = "'procura':false";}
125 } 125 }
126 $botoes = "{".implode(",",$objBotoes)."}"; 126 $botoes = "{".implode(",",$objBotoes)."}";
127 // 127 //
@@ -187,6 +187,7 @@ Parâmetros: @@ -187,6 +187,7 @@ Parâmetros:
187 edita 187 edita
188 apaga 188 apaga
189 captura 189 captura
  190 + procura
190 191
191 Para ver a lista de códigos de temas, que podem ser utilizados no parâmetro 'temas', acesse: 192 Para ver a lista de códigos de temas, que podem ser utilizados no parâmetro 'temas', acesse:
192 <a href='../ogc.php?lista=temas' >lista de temas</a>. Os códigos são mostrados em vermelho. 193 <a href='../ogc.php?lista=temas' >lista de temas</a>. Os códigos são mostrados em vermelho.
@@ -202,363 +203,22 @@ Parâmetros: @@ -202,363 +203,22 @@ Parâmetros:
202 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 203 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
203 <html> 204 <html>
204 <head> 205 <head>
  206 +<link rel="stylesheet" type="text/css" href="../pacotes/yui270/build/fonts/fonts-min.css" />
  207 +<link rel="stylesheet" type="text/css" href="../pacotes/yui270/build/container/assets/skins/sam/container.css" />
  208 +<script type="text/javascript" src="../pacotes/yui270/build/yahoo-dom-event/yahoo-dom-event.js"></script>
  209 +<script type="text/javascript" src="../pacotes/yui270/build/dragdrop/dragdrop-min.js"></script>
  210 +<script type="text/javascript" src="../pacotes/yui270/build/container/container-min.js"></script>
205 <script type="text/javascript" src="../classesjs/compactados/classe_calculo_compacto.js"></script> 211 <script type="text/javascript" src="../classesjs/compactados/classe_calculo_compacto.js"></script>
206 <script type="text/javascript" src="../pacotes/openlayers/OpenLayers.js.php"></script> 212 <script type="text/javascript" src="../pacotes/openlayers/OpenLayers.js.php"></script>
207 <link rel="stylesheet" href="theme/default/style.css" type="text/css" /> 213 <link rel="stylesheet" href="theme/default/style.css" type="text/css" />
208 <link rel="stylesheet" href="openlayers.css" type="text/css" /> 214 <link rel="stylesheet" href="openlayers.css" type="text/css" />
209 -  
210 </head> 215 </head>
211 -<body> 216 +<body class=" yui-skin-sam">
212 <div id=i3geoMapa style="width:<?php echo $largura;?>px;height:<?php echo $altura;?>px;"></div> 217 <div id=i3geoMapa style="width:<?php echo $largura;?>px;height:<?php echo $altura;?>px;"></div>
  218 +<div id=i3geoSelTemaAtivo style="height:15em;z-index:3000" class=" yui-skin-sam"></div>
213 <script type="text/javascript"> 219 <script type="text/javascript">
214 -navn = false;  
215 -//seta as variáveis navn e navm  
216 -var navn = false;  
217 -var navm = false;  
218 -var app = navigator.appName.substring(0,1);  
219 -if (app==='N'){navn=true;}else{navm=true;}  
220 -  
221 -OpenLayers.ImgPath = "../pacotes/openlayers/img/"  
222 -OpenLayers.Lang.setCode("pt-BR");  
223 -function i3GeoMapaInicia(){  
224 - i3geoOL = new OpenLayers.Map('i3geoMapa', {  
225 - controls: [  
226 - <?php echo implode(",",$objControles); ?>  
227 - ],  
228 - numZoomLevels: <?php echo $numzoomlevels;?>,  
229 - maxExtent: new OpenLayers.Bounds(<?php echo $maxextent;?>)  
230 - });  
231 - var ol_wms = new OpenLayers.Layer.WMS.Untiled( "OpenLayers WMS","http://labs.metacarta.com/wms/vmap0",{layers: 'basic'} );  
232 - var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic","http://t1.hypercube.telascience.org/cgi-bin/landsat7",{layers: "landsat7"});  
233 - jpl_wms.setVisibility(false);  
234 - layergrafico = new OpenLayers.Layer.Vector("Edição");  
235 - i3geoOL.addLayers([ol_wms, jpl_wms, <?php echo implode(",",$objOpenLayers); ?>,layergrafico]);  
236 - i3geoOL.zoomToMaxExtent();  
237 - //  
238 - //substitui o controle que mostra as coordenadas  
239 - //  
240 - var idcoord = i3geoOL.getControlsBy("separator"," ");  
241 - //alert(idcoord[0].id)  
242 - if(idcoord[0]){  
243 - i3geoOL.events.register("mousemove", i3geoOL, function(e){  
244 - var p,lonlat,d,dc;  
245 - if (navm)  
246 - {p = new OpenLayers.Pixel(e.x,e.y);}  
247 - else  
248 - {p = e.xy;}  
249 - //altera o indicador de localizacao  
250 - lonlat = i3geoOL.getLonLatFromPixel(p);  
251 - d = i3GEO.calculo.dd2dms(lonlat.lon,lonlat.lat);  
252 - try{  
253 - $i(idcoord[0].id).innerHTML = "Long: "+d[0]+"<br>Lat: "+d[1];  
254 - }  
255 - catch(e){  
256 - if(typeof(console) !== 'undefined'){console.error(e);}  
257 - }  
258 - });  
259 - }  
260 - var botoes = <?php echo $botoes; ?>;  
261 - i3GEOOLcriaBotoes(botoes);  
262 -};  
263 -function i3GEOOLcriaBotoes(botoes){  
264 - var sketchSymbolizers = {  
265 - "Point": {  
266 - pointRadius: 4,  
267 - graphicName: "square",  
268 - fillColor: "white",  
269 - fillOpacity: 1,  
270 - strokeWidth: 1,  
271 - strokeOpacity: 1,  
272 - strokeColor: "#333333"  
273 - },  
274 - "Line": {  
275 - strokeWidth: 3,  
276 - strokeOpacity: 1,  
277 - strokeColor: "#666666",  
278 - strokeDashstyle: "dash"  
279 - },  
280 - "Polygon": {  
281 - strokeWidth: 2,  
282 - strokeOpacity: 1,  
283 - strokeColor: "#666666",  
284 - fillColor: "white",  
285 - fillOpacity: 0.3  
286 - }  
287 - };  
288 - var style = new OpenLayers.Style();  
289 - style.addRules([  
290 - new OpenLayers.Rule({symbolizer: sketchSymbolizers})  
291 - ]);  
292 - var styleMap = new OpenLayers.StyleMap({"default": style});  
293 -  
294 - var adiciona = false;  
295 - var controles = new Array();  
296 - var panel = new OpenLayers.Control.Panel({  
297 - displayClass: "olControlEditingToolbar noprint"  
298 - });  
299 - if(botoes.pan==true){  
300 - controles.push(new OpenLayers.Control.Navigation({title: "Deslocar",displayClass:"pan"}));  
301 - var adiciona = true;  
302 - }  
303 - if(botoes.zoombox==true){  
304 - controles.push(new OpenLayers.Control.ZoomBox({displayClass: "zoombox",title: "Zoom"}));  
305 - var adiciona = true;  
306 - }  
307 - if(botoes.zoomtot==true){  
308 - var button = new OpenLayers.Control.Button({  
309 - displayClass: "zoomtot",  
310 - trigger: function(){i3geoOL.zoomToMaxExtent();},  
311 - title: "Ajusta extens&atilde;o"  
312 - });  
313 - controles.push(button);  
314 - var adiciona = true;  
315 - }  
316 - if(botoes.legenda==true){  
317 - var button = new OpenLayers.Control.Button({  
318 - displayClass: "legenda",  
319 - trigger: function(){i3GEOOLmostraLegenda();},  
320 - title: "Legenda"  
321 - });  
322 - controles.push(button);  
323 - var adiciona = true;  
324 - }  
325 - if(botoes.distancia==true){  
326 - var button = new OpenLayers.Control.Measure(  
327 - OpenLayers.Handler.Path,  
328 - {  
329 - handlerOptions: {layerOptions: {styleMap: styleMap}},  
330 - persist: true,  
331 - displayClass: "distancia",  
332 - title: "Distância"  
333 - }  
334 - );  
335 - button.events.on({  
336 - "measure": function(event){  
337 - var units = event.units;  
338 - var measure = event.measure;  
339 - alert("Distância: " + measure.toFixed(3) + " " + units);  
340 - },  
341 - });  
342 - controles.push(button);  
343 - var adiciona = true;  
344 - }  
345 - if(botoes.area==true){  
346 - var button = new OpenLayers.Control.Measure(  
347 - OpenLayers.Handler.Polygon,  
348 - {  
349 - handlerOptions: {layerOptions: {styleMap: styleMap}},  
350 - persist: true,  
351 - displayClass: "area",  
352 - title: "Área"  
353 - }  
354 - );  
355 - button.events.on({  
356 - "measure": function(event){  
357 - var units = event.units;  
358 - var measure = event.measure;  
359 - alert("Área: " + measure.toFixed(3) + " " + units + " quadrados");  
360 - },  
361 - });  
362 - controles.push(button);  
363 - var adiciona = true;  
364 - }  
365 - if(botoes.identifica==true){  
366 - button = new OpenLayers.Control.WMSGetFeatureInfo({  
367 - maxFeatures:1,  
368 - infoFormat:'text/plain', //'application/vnd.ogc.gml',  
369 - layers: i3GEOOLpegaLayers(),  
370 - queryVisible: true,  
371 - title: "Identificar",  
372 - displayClass: "identifica",  
373 - eventListeners: {  
374 - getfeatureinfo: function(event) {  
375 - var lonlat = i3geoOL.getLonLatFromPixel(event.xy);  
376 - var lonlattexto = "<hr><pre><span style=color:blue;cursor:pointer onclick='i3GEOOLcaptura(\""+lonlat.lon+","+lonlat.lat+"\")'>captura</span></pre>";  
377 - i3geoOL.addPopup(new OpenLayers.Popup.FramedCloud(  
378 - "chicken",  
379 - i3geoOL.getLonLatFromPixel(event.xy),  
380 - null,  
381 - lonlattexto+"<pre>"+event.text+"</pre>",  
382 - null,  
383 - true  
384 - ));  
385 - }  
386 - }  
387 - });  
388 - //button.events.register("getfeatureinfo", this, showInfo);  
389 - controles.push(button);  
390 - var adiciona = true;  
391 - }  
392 - if(botoes.linha==true){  
393 - button = new OpenLayers.Control.DrawFeature(  
394 - layergrafico,  
395 - OpenLayers.Handler.Path,  
396 - {  
397 - displayClass: "linha",  
398 - title: "digitalizar linha"  
399 - }  
400 - );  
401 - controles.push(button);  
402 - var adiciona = true;  
403 - }  
404 - if(botoes.ponto==true){  
405 - button = new OpenLayers.Control.DrawFeature(  
406 - layergrafico,  
407 - OpenLayers.Handler.Point,  
408 - {  
409 - displayClass: "ponto",  
410 - title: "digitalizar ponto"  
411 - }  
412 - );  
413 - controles.push(button);  
414 - var adiciona = true;  
415 - }  
416 - if(botoes.poligono==true){  
417 - button = new OpenLayers.Control.DrawFeature(  
418 - layergrafico,  
419 - OpenLayers.Handler.Polygon,  
420 - {  
421 - displayClass: "poligono",  
422 - title: "digitalizar polígono"  
423 - }  
424 - );  
425 - controles.push(button);  
426 - var adiciona = true;  
427 - }  
428 - if(botoes.edita==true){  
429 - button = new OpenLayers.Control.ModifyFeature(  
430 - layergrafico,  
431 - {  
432 - displayClass: "edita",  
433 - title: "edita elemento"  
434 - }  
435 - );  
436 - controles.push(button);  
437 - var adiciona = true;  
438 - }  
439 - //botao de seleção  
440 - if(botoes.apaga==true){  
441 - button = new OpenLayers.Control.SelectFeature(  
442 - layergrafico,  
443 - {  
444 - displayClass: "selecao",  
445 - title: "seleciona elemento",  
446 - clickout: true,  
447 - toggle: true,  
448 - multiple: false,  
449 - hover: false,  
450 - toggleKey: "ctrlKey", // ctrl key removes from selection  
451 - multipleKey: "shiftKey", // shift key adds to selection  
452 - box: false  
453 - }  
454 - );  
455 - controles.push(button);  
456 - var adiciona = true;  
457 - }  
458 - if(botoes.apaga==true){  
459 - var button = new OpenLayers.Control.Button({  
460 - displayClass: "apaga",  
461 - trigger: function(){  
462 - if(layergrafico.selectedFeatures.length > 0){  
463 - var x = window.confirm("Exclui os elementos selecionados?");  
464 - if(x)  
465 - {layergrafico.removeFeatures(layergrafico.selectedFeatures);}  
466 - }  
467 - else  
468 - {alert("Selecione pelo menos um elemento");}  
469 - },  
470 - title: "Apaga selecionados"  
471 - });  
472 - controles.push(button);  
473 - var adiciona = true;  
474 - }  
475 - if(botoes.captura==true){  
476 - botaoCapturaOL = new OpenLayers.Control.GetFeature({  
477 - protocol: "",  
478 - displayClass: "captura",  
479 - title: "Captura geometria",  
480 - eventListeners: {  
481 - featureselected: function(e) {  
482 - layergrafico.addFeatures([e.feature]);  
483 - }  
484 - }  
485 - });  
486 - botaoCapturaOL.events.register(  
487 - "activate",  
488 - this,  
489 - function(e){  
490 - var layers = i3GEOOLpegaLayers();  
491 - var u = layers[0].url+"&request=getfeature&service=wfs";  
492 - u += "&typename="+layers[0].params.LAYERS;  
493 - u += "&filter=<Filter><Intersect><PropertyName>Geometry</PropertyName><gml:Point><gml:coordinates>-54,-12</gml:coordinates></gml:Point></Intersect></Filter>";  
494 - botaoCapturaOL.protocol = OpenLayers.Protocol.WFS({  
495 - url:u  
496 - });  
497 - }  
498 - );  
499 - controles.push(botaoCapturaOL);  
500 - var adiciona = true;  
501 - }  
502 - //  
503 - //adiciona o painel ao mapa se alguma op��o foi inserida  
504 - //  
505 - if(adiciona == true){  
506 - panel.addControls(controles);  
507 - i3geoOL.addControl(panel);  
508 - }  
509 -}  
510 -function i3GEOOLmostraLegenda(){  
511 - var layers = pegaLayers()  
512 - var nlayers = layers.length;  
513 - var ins = "";  
514 - for(i=0;i<nlayers;i++){  
515 - var url = layers[i].getFullRequestString({"request":"getlegendgraphic"});  
516 - url = url.replace("LAYERS","LAYER");  
517 - ins += "<img src='"+url+"' /><br>";  
518 - }  
519 - var w = window.open()  
520 - w.document.write(ins)  
521 - w.document.close();  
522 -  
523 -}  
524 -function i3GEOOLpegaLayers(){  
525 - var layers = i3geoOL.layers;  
526 - var nlayers = layers.length;  
527 - var ins = new Array();  
528 - for(i=0;i<nlayers;i++){  
529 - if(layers[i].visibility && (layers[i].isBaseLayer == false)){  
530 - ins.push(layers[i]);  
531 - }  
532 - }  
533 - return ins;  
534 -}  
535 -function i3GEOOLcaptura(lonlat){  
536 - var layers = i3GEOOLpegaLayers();  
537 - var u = layers[0].url+"&request=getfeature&service=wfs&version=1.0.0";  
538 - u += "&OUTPUTFORMAT=gml2&typename="+layers[0].params.LAYERS;  
539 - u += "&filter=<Filter><Intersect><PropertyName>Geometry</PropertyName><gml:Point><gml:coordinates>"+lonlat+"</gml:coordinates></gml:Point></Intersect></Filter>";  
540 - document.body.style.cursor="wait";  
541 - document.getElementById("i3geoMapa").style.cursor = "wait";  
542 - OpenLayers.Request.issue({  
543 - method: "GET",  
544 - url: u,  
545 - callback: function(retorno){  
546 - document.body.style.cursor="default";  
547 - document.getElementById("i3geoMapa").style.cursor = "default";  
548 - var fromgml = new OpenLayers.Format.GML({  
549 - geometryName: "msGeometry"  
550 - });  
551 - var gml = fromgml.read(retorno.responseText);  
552 - layergrafico.addFeatures(gml);  
553 - },  
554 - failure: function(){  
555 - document.body.style.cursor="default";  
556 - document.getElementById("i3geoMapa").style.cursor = "default";  
557 - alert("Erro");  
558 - }  
559 - })  
560 -}  
561 -i3GeoMapaInicia(); 220 +<?php include("openlayers.js.php"); ?>
  221 +i3GEOOL.inicia()
562 </script> 222 </script>
563 </body> 223 </body>
564 -</html> 224 +</html>
565 \ No newline at end of file 225 \ No newline at end of file
mashups/openlayers.png

14.8 KB | W: | H:

16.2 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
menutemas/admin.db
No preview for this file type