iniciamma.js
17.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
/*
Title: iniciamma.js
Cria o objeto objmapa e inicializa o i3geo.
Define as operações das funcionalidades principais.
O I3Geo utiliza variáveis (veja o item específico na documentação) globais que possibilitam alterar algumas das características da interface.
Essas variáveis recebem valores default quando o I3Geo é iniciado mas podem ser alterados antes da inicialização do mapa (método inicializa()).
No arquivo aplicmapa/geral.htm existem exemplos de como fazer isso.
As variáveis globais podem também ser alteradas em tempo de execução.
Exemplo:
g_janelaMen = "nao"
objmapa = new Mapa()
objmapa.inicializa()
File: i3geo/classesjs/iniciamma.js
About: Licença
I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br
Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;
tanto a versão 2 da Licença.
Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
*/
/*
Section: variáveis de configuração calculadas na inicialização do mapa
*/
/*
Variable: imagemxi depreciada
Inicialização da variável de cálculo de posicionamento que indica a posição em x do corpo do mapa.
É calculada na iniciallização e indica a posição em pixels do corpo do mapa na página. Muitos elementos da interface são posicionados em função desse valor.
*/
imagemxi = 0;
/*
Variable: imagemyi depreciada
Inicialização da variável de cálculo de posicionamento que indica a posição em x do corpo do mapa
É calculada na iniciallização e indica a posição em pixels do corpo do mapa na página. Muitos elementos da interface são posicionados em função desse valor.
*/
imagemyi = 0;
/*
Variable: navm
Verdadeiro (true) se o navegador for o Internet Explorer
*/
navm = false;
/*
Variable: navn
Verdadeiro (true) se o navegador for o Firefox
*/
navn = false;
//seta as variáveis navn e navm
var app = navigator.appName.substring(0,1);
if (app=='N') navn=true; else navm=true;
/*
Section: variáveis que são definidas para controle de processos das funções do I3Geo. São definidas aqui para não gerarem erros nas funções que as utilizam.
*/
/*
Variable: atuaLeg
Variável interna que define se a legenda docável deve ser atualizada.
Quando a legenda é colocada em uma janela móvel, essa variável é utilizada para demonstrar seu status.
Se sim, a legenda móvel é atualizada quando o mapa é alterado.
*/
atuaLeg="nao";
/*
Variable: g_zoomRefDinamico
Define o fator de zoom que será aplicado ao mapa de referência quando este estiver no modo dinâmico.
*/
g_zoomRefDinamico = -3;
/*
Variable: g_mashuppar
Parâmetros de inicialização que podem ser utilizados na interface mashup.
Os parâmetros são os mesmos que podem ser utilizados quando o i3geo é inicializado pelo ms_criamapa.php.
Exemplo: g_mashuppar = "&pontos=-54 -12&temasa=biomas&layers=biomas"
A inicialização do I3Geo como Mashup possibilita que o I3Geo funcione dentro de uma página web qualquer, como um componente.
*/
g_mashuppar = "";
/*
Variable: g_operacao
Nome da última operação que foi executada.
Dependendo do tipo de operação são aplicadas as atualizações necessárias aos componentes do mapa. Por exemplo, redesenha o corpo do mapa, atualiza a lista de temas, etc.
Essas operações são controladas pela função ajaxiniciaparametros.
*/
g_operacao = "";
/*
Variable: g_zoomProximo
Array com as extensões geográficas da função de zoom anterior e zoom próximo.
*/
g_zoomProximo = new Array();
/*
Variable: g_nomepin
Nome do tema atual que irá receber dados pontuais ou toponimia.
*/
g_nomepin = "";
/*
Variable: g_arvoreClick (depreciado)
Item da árvore de temas que foi clicado por último. Guarda o identificador do nó da árvore de temas.
Essa variável permite que as funções lembrem qual foi o último tema sobre o qual o usuário fez alguma operação.
*/
g_arvoreClick = "";
g_arvoreClicks = "";
/*
Variable: g_tipoacao
Tipo de ação que está sendo executada.
Quando o usuário clica no mapa, essa variável é pesquisada para definir o tipo de operação que deve ser executada.
É definida quando o usuário seleciona uma determinada ferramenta do i3Geo.
*/
g_tipoacao = "zoomli";
/*
Variable: g_realca
Define se o realce do mapa deve ficar ativo.
O realce é um box que segue o mouse, por ter uma coloração diferente, provoca um efeito de destaque.
*/
g_realca = "nao";
/*
Variable: g_panM
Indica se o mapa deve ou não ser deslocado.
É utilizada no controle da função "pan".
*/
g_panM = "nao";
/*
Variable: g_r
Indica se o software R esta instalado (sim ou nao). É preenchida na inicialização do mapa via AJAX.
*/
g_r = "nao";
g_postpx = "px";
g_tipotop = "top";
g_tipoleft = "left";
if (navm)
{
g_postpx = ""; //utilizado para crossbrowser
g_tipotop = "pixelTop"; //utilizado para crossbrowser
g_tipoleft = "pixelLeft"; //utilizado para crossbrowser
}
/*
Class: Mapa
Objeto mapa (objmapa).
Executa os programas ajax que geram o corpo do mapa, o mapa de referência, a barra de escala e a legenda.
Preenche os elementos HTML necessários para visualização do mapa.
Parameters:
e - (opcional, se não existir, o valor será buscado na URL) extensão geográfica do mapa com valores separados por espaço
m - (opcional, se não existir, o valor será buscado na URL) nome do mapfile criado para o mapa
return:
objmapa - objeto mapa do i3geo
Constructor:
objmapa = New Mapa()
*/
function Mapa(e,m)
{
//para efeitos de compatibilidade
try {
i3GEO.configura.locaplic = g_locaplic;
}
catch(e){g_locaplic = i3GEO.configura.locaplic;};
//
//calcula o tamanho do mapa
var diminuix = (navm) ? g_diminuixM : g_diminuixN;
var diminuiy = (navm) ? g_diminuiyM : g_diminuiyN;
/*
Variable: objmapa.w
Largura do mapa criado
É calculado em função do tamanho da tela. No caso do corpo do mapa possuir a propridedade de largura em seu estilo, é utilizado esse tamanho.
*/
/*
Variable: objmapa.h
Altura do mapa criado
É calculado em função do tamanho da tela. No caso do corpo do mapa possuir a propridedade de largura em seu estilo, é utilizado esse tamanho.
*/
if (e == undefined)
{
var menos = 0;
if ($i("contemFerramentas"))
{menos = menos + parseInt($i("contemFerramentas").style.width);}
if ($i("ferramentas"))
{menos = menos + parseInt($i("ferramentas").style.width);}
var novow = parseInt(screen.availWidth) - diminuix;
var novoh = parseInt(screen.availHeight) - diminuiy;
if (novow >= 1024)
{
novow = 1000;
}
if (novoh >= 700)
{
novoh = 700;
}
//o try aqui é necessário por conta do uso possível do i3geo em um iframe
try
{
if (document.body.style.width < 400)
{
var novow = parseInt(screen.availWidth) - diminuix;
var novoh = parseInt(screen.availHeight) - diminuiy;
window.resizeTo(screen.availWidth,screen.availHeight);
window.moveTo(0,0);
}
}
catch(e){var e = "";}
document.body.style.width = novow;
document.body.style.height = novoh;
this.w = novow - menos - diminuix;
this.h = novoh - diminuiy;
if (document.getElementById("corpoMapa"))
{
if (document.getElementById("corpoMapa").style.width)
{
this.w = parseInt(document.getElementById("corpoMapa").style.width);
this.h = parseInt(document.getElementById("corpoMapa").style.width);
}
if (document.getElementById("corpoMapa").style.height)
{this.h = parseInt(document.getElementById("corpoMapa").style.height);}
}
}
else
{
this.w = document.body.offsetWidth - parseInt($i("contemFerramentas").style.width) - diminuix;
this.h = document.body.offsetHeight - diminuiy;
}
if($i("contemImg"))
{
$i("contemImg").style.height=this.h + "px";
$i("contemImg").style.width=this.w + "px";
}
i3GEO.interface.cria(this.w,this.h);
/*
Variable: objmapa.navegacaoDir
Indica se deve ser incluida a opção de navegação nos diretórios do servidor.
A indicação sim|nao é obtida na inicialização do i3geo, e é definido no ms_configura.php
*/
this.navegacaoDir = "nao";
/*
Variable: objmapa.listavisual
String com a lista de visuais disponíveis no i3geo.
A lista é obtida na inicialização do i3geo, lendo-se os diretórios disponíveis em imagens/visual
*/
this.listavisual = "";
/*
Variable: objmapa.visualatual
Indica qual o visual atualmente em uso.
*/
this.visualatual = "default";
/*
Variable: objmapa.funcoesClickMapa
Array com a lista de funções que serão executadas quando o usuário clica no mapa
É utilizado quando o i3geo é customizado, acrescentando outras funcionalidades alé do padrão.
Na customização, deve ser definida após a inicialização do mapa.
*/
this.funcoesClickMapa = new Array();
/*
Variable: objmapa.objtips
Array que guarda os objetos tips fixos na tela.
Os objetos são acrescentados à essa variável quando um tip é fixado na tela pelo usuário.
Quando o mapa é redesenhado, essa variável é limpa.
*/
this.objtips = new Array(); //
/*
Variable: objmapa.tempo
Inicia o temporizador para redesenhar o mapa.
*/
this.tempo = ""; //
/*
Variable: objmapa.tempoRedesenho
Inicia o temporizador para redesenhar o mapa automaticamente.
*/
this.tempoRedesenho = ""; //
this.contaTempoRedesenho = ""; //
/*
Variable: objmapa.temaAtivo
Tema que esta ativo.
Utilizado em varias operacoes onde o tema e selecionado de um combo
*/
this.temaAtivo = "";
/*
Variable: objmapa.pinmarca
Simbolo utilizado para insercao de pontos.
A inserção é utilizada em algumas ferramentas, como a digitalização de elementos.
*/
this.pinmarca = "marca"; //
/*
Variable: objmapa.pintamanho
Tamanho da marca utilizada na inclusão de pontos
*/
this.pintamanho= "5";
/*
Variable: objmapa.escala
Escala do mapa atual.
É sempre redefinida quando o mapa é redesenhado.
*/
this.scale = 50000;
/*
Variable: objmapa.temas (depreciado)
Utilize i3GEO.arvoreDeCamadas.CAMADAS
Temas disponíveis no mapa atual.
*/
/*
Variable: objmapa.legenda
Legenda HTML do mapa atual.
Guarda o HTML que apresenta a legenda no mapa.
*/
this.legenda="";
/*
Variable: objmapa.finaliza
Função que será executada no final do processo de montagem do mapa.
Pode ser utilizada quando se deseja customizar o I3Geo.
*/
this.finaliza="";
/*
Variable: objmapa.cgi
Indica a localização do mapserver cgi. É definida pelo i3geo na inicialização do mapa e configurada no arquivo ms_configura.php.
*/
this.cgi = "";
/*
Variable: objmapa.utilizacgi
Indica se o mapserver está operando no modo cgi. É definida pelo i3geo na inicialização do mapa e configurada no arquivo ms_configura.php.
*/
this.utilizacgi = "";
/*
Variable: objmapa.versaoms
Versão do mapserver em uso
*/
this.versaoms = "";
/*
Function: inicializa
Inicializa o mapa
Paremeters:
void
*/
this.inicializa= function()
{
i3GEOmantemCompatibilidade();
if (!$i("i3geo"))
{document.body.id = "i3geo";}
$i("i3geo").className = "yui-skin-sam";
if($i("mst"))
$i("mst").style.visibility ="hidden";
//
//se g_sid="", o html foi aberto diretamente
//então, é necessário criar os arquivos temporários do mapa
//essa operação deve ser assíncrona
//
if(i3GEO.configura.sid=="")
{
var mashup = function (retorno)
{
i3GEO.configura.sid = retorno.data;
objmapa.inicializa();
};
i3GEO.php.criamapa(mashup,g_mashuppar);
}
else
{
//
//inicia o mapa
//
//YAHOO.log("Chamada AJAX para obter o mapa inicial", "i3geo");
i3GEO.janela.abreAguarde("montaMapa",$trad("o5"));
i3GEO.php.inicia(this.montaMapa,g_embedLegenda,this.w,this.h);
}
if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.janela.fechaAguarde()") < 0)
{i3GEO.eventos.NAVEGAMAPA.push("i3GEO.janela.fechaAguarde()");}
};
/*
Function: montaMapa
Processa os resultados da inicialização e monta o mapa
Parameters:
Resultado da função inicia retornado pela chamada em ajax
*/
this.montaMapa = function(retorno)
{
//YAHOO.log("Mapa obtido", "i3geo");
if(retorno == ""){alert("Ocorreu um erro no mapa - montaMapa");retorno = {data:{erro: "erro"}};}
if(retorno.data.erro)
{
i3GEO.janela.fechaAguarde("montaMapa");
document.body.style.backgroundColor="white";
document.body.innerHTML = "<br>Para abrir o i3Geo utilize o link:<br><a href="+i3GEO.configura.locaplic+"/ms_criamapa.php >"+i3GEO.configura.locaplic+"/ms_criamapa.php</a>";
return("linkquebrado");
}
else
{
if(retorno.data.variaveis)
{
//
//executa com eval a string que é retornada pelo servidor (função inicia do mapa_controle.php
//
var tempo = "";
var titulo = "";
eval(retorno.data.variaveis);
try
{
if (titulo != "")
{top.document.title = titulo;}
}
catch(e){var e = "";}
i3GEO.ajuda.mostraJanela("Tempo de desenho em segundos: "+tempo,"");
objmapa.scale = parseInt(mapscale);
objmapa.cellsize = g_celula;
objmapa.extent = mapexten;
objmapa.extentTotal = mapexten;
i3GEO.interface.inicia();
if (objmapa.finaliza)
{eval(objmapa.finaliza);}
i3GEO.gadgets.quadros.inicia(10);
i3GEO.gadgets.quadros.grava("extensao",mapexten);
i3GEO.arvoreDeCamadas.cria("",retorno.data.temas,i3GEO.configura.sid,i3GEO.configura.locaplic);
i3GEO.maparef.atualiza();
i3GEO.util.arvore("<b>"+$trad("p13")+"</b>","listaPropriedades",i3GEO.configura.listaDePropriedadesDoMapa);
i3GEO.gadgets.mostraCoordenadasGEO();
i3GEO.gadgets.mostraEscalaNumerica();
i3GEO.gadgets.mostraBuscaRapida();
i3GEO.gadgets.mostraEscalaGrafica();
i3GEO.gadgets.visual.inicia();
i3GEO.guias.cria();
if($i("arvoreAdicionaTema"))
i3GEO.arvoreDeTemas.cria(i3GEO.configura.sid,i3GEO.configura.locaplic,"arvoreAdicionaTema");
i3GEO.ajuda.ativaLetreiro(objmapa.mensagens);
if($i("mst")){$i("mst").style.display="block";}
//ajaxCorpoMapa(retorno);
ajaxIniciaParametros(retorno);
//
//calcula (opcional) o tamanho correto da tabela onde fica o mapa
//se não for feito esse cálculo, o mapa fica ajustado à esquerda
//
var temp = 0;
if ($i("contemFerramentas")){temp = temp + parseInt($i("contemFerramentas").style.width);}
if ($i("ferramentas")){temp = temp + parseInt($i("ferramentas").style.width);}
if($i("mst"))
{$i("mst").style.width=objmapa.w + temp + "px";}
i3GEO.mapa.ajustaPosicao();
//
//reposiciona a janela de botoes
//
var imagemxy = i3GEO.util.pegaPosicaoObjeto($i("corpoMapa"));
//
//inicia as barras de ferramentas
//
if ($i("barraDeBotoes1")){
var x1 = imagemxy[0]+40;
var y1 = imagemxy[1]+10;
}
if ($i("barraDeBotoes2")){
var x2 = imagemxy[0];
var y2 = imagemxy[1]+10;
}
else{
if ($i("barraDeBotoes1")){
var x1 = imagemxy[0];
var x2 = imagemxy[1]+10;
}
}
if ($i("barraDeBotoes1"))
i3GEO.barraDeBotoes.inicializaBarra("barraDeBotoes1","i3geo_barra1",true,x1,y1);
if ($i("barraDeBotoes2"))
i3GEO.barraDeBotoes.inicializaBarra("barraDeBotoes2","i3geo_barra2",false,x2,y2);
//ativa as funções dos botões
i3GEO.barraDeBotoes.ativaBotoes();
if (i3GEO.configura.entorno == "sim"){
i3GEO.configura.entorno == "nao";
i3GEO.navega.entorno.ativaDesativa();
}
i3GEO.navega.autoRedesenho.ativa();
if ($i("i3geo_escalanum")){$i("i3geo_escalanum").value = objmapa.scale;}
if ((objmapa.geoip == "nao") && ($i("ondeestou")))
{$i("ondeestou").style.display="none";}
}
else
{alert("Erro. Impossivel criar o mapa "+retorno.data);return;}
//
//ativa a janela de mensagens se for o caso
//
if(document.getElementById("ajuda")) //para efeitos de compatibilidade com as versões anteriores a 4.1
{i3GEO.ajuda.DIVAJUDA = "ajuda";}
var abreJM = "sim";
if (i3GEO.util.pegaCookie("g_janelaMen")){
var abreJM = i3GEO.util.pegaCookie("g_janelaMen");
if(abreJM == "sim")
i3GEO.configura.iniciaJanelaMensagens = true;
else
i3GEO.configura.iniciaJanelaMensagens = false;
}
if(i3GEO.configura.iniciaJanelaMensagens == true)
{i3GEO.ajuda.abreJanela();}
if (i3GEO.configura.mapaRefDisplay != "none")
{
if (i3GEO.util.pegaCookie("i3GEO.configura.mapaRefDisplay")){i3GEO.configura.mapaRefDisplay = i3GEO.util.pegaCookie("i3GEO.configura.mapaRefDisplay");}
if (i3GEO.configura.mapaRefDisplay == "block"){i3GEO.maparef.inicia();}
}
i3GEO.janela.fechaAguarde("montaMapa");
if (i3GEO.configura.liberaGuias == "sim"){i3GEO.guias.libera();}
if (document.getElementById("botao3d"))
{
if (g_3dmap == ""){document.getElementById("botao3d").style.display="none";}
}
}
if($i("mst")){
$i("mst").style.visibility ="visible";
}
//YAHOO.log("Fim objmapa.inicializa", "i3geo");
};
}