Commit cff3c9895894403345199291b860003958eb41b3

Authored by Edmar Moretti
1 parent 006cbbbf

correção de sintaxe javascript

classesjs/classe_analise.js
... ... @@ -32,12 +32,14 @@ Você deve ter recebido uma cópia da Licença Pública G
32 32 GNU junto com este programa; se não, escreva para a
33 33 Free Software Foundation, Inc., no endereço
34 34 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
35   -*/
  35 + */
36 36 if(typeof(i3GEO) === 'undefined'){
37 37 var i3GEO = {};
38 38 }
39 39 i3GEO.analise = {
40   - /*
  40 + //armazena os pontos coletados nas funcoes de medicao de area e distancia
  41 + pontosdistobj: {},
  42 + /*
41 43 Classe: i3GEO.analise.dialogo
42 44  
43 45 Abre as telas de dialogo das opcoes de analise
... ... @@ -47,181 +49,181 @@ i3GEO.analise = {
47 49 Para abrir a mensagem de dialogo de geracao de buffer, utilize
48 50  
49 51 i3GEO.analise.dialogo.buffer()
50   - */
51   - dialogo:{
52   - /*
  52 + */
  53 + dialogo:{
  54 + /*
53 55 Function: saiku
54 56  
55 57 Abre a janela de dialogo da ferramenta SAIKU
56   - */
57   - saiku: function(){
58   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.saiku()","saiku","saiku");
59   - },
60   - /*
  58 + */
  59 + saiku: function(){
  60 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.saiku()","saiku","saiku");
  61 + },
  62 + /*
61 63 Function: graficoInterativo
62 64  
63 65 Abre a janela de dialogo da ferramenta graficointerativo versao flash
64   - */
65   - graficoInterativo: function(){
66   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.graficoInterativo()","graficointerativo","graficointerativo");
67   - },
68   - /*
  66 + */
  67 + graficoInterativo: function(){
  68 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.graficoInterativo()","graficointerativo","graficointerativo");
  69 + },
  70 + /*
69 71 Function: graficoInterativo1
70 72  
71 73 Abre a janela de dialogo da ferramenta graficointerativo
72   - */
73   - graficoInterativo1: function(){
74   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.graficoInterativo1()","graficointerativo1","graficointerativo1");
75   - },
76   - /*
  74 + */
  75 + graficoInterativo1: function(){
  76 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.graficoInterativo1()","graficointerativo1","graficointerativo1");
  77 + },
  78 + /*
77 79 Function: linhaDoTempo
78 80  
79 81 Abre a janela de dialogo da ferramenta linhadotempo
80   - */
81   - linhaDoTempo: function(){
82   - if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.dialogo.linhaDoTempo()");}
83   - i3GEO.janela.cria("450px","350px",i3GEO.configura.locaplic+"/ferramentas/linhadotempo/index.php","","","Linha do tempo <a class=ajuda_usuario target=_blank href='"+i3GEO.configura.locaplic+"/ajuda_usuario.php?idcategoria=3&idajuda=88' >&nbsp;&nbsp;&nbsp;</a>");
84   - atualizaLinhaDoTempo = function(){
85   - var doc = "", ifr = "";
86   - try{
87   - ifr = $i("wdocai");
88   - if (navn){
89   - if (ifr){
90   - doc = ifr.contentDocument;
  82 + */
  83 + linhaDoTempo: function(){
  84 + if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.dialogo.linhaDoTempo()");}
  85 + i3GEO.janela.cria("450px","350px",i3GEO.configura.locaplic+"/ferramentas/linhadotempo/index.php","","","Linha do tempo <a class=ajuda_usuario target=_blank href='"+i3GEO.configura.locaplic+"/ajuda_usuario.php?idcategoria=3&idajuda=88' >&nbsp;&nbsp;&nbsp;</a>");
  86 + atualizaLinhaDoTempo = function(){
  87 + var doc = "", ifr = "";
  88 + try{
  89 + ifr = $i("wdocai");
  90 + if (navn){
  91 + if (ifr){
  92 + doc = ifr.contentDocument;
  93 + }
91 94 }
92   - }
93   - else{
94   - if(document.frames("wdocai")){
95   - doc = document.frames("wdocai").document;
  95 + else{
  96 + if(document.frames("wdocai")){
  97 + doc = document.frames("wdocai").document;
  98 + }
96 99 }
  100 + doc.getElementById("tl") ? window.parent.wdocai.carregaDados() : i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()");
97 101 }
98   - doc.getElementById("tl") ? window.parent.wdocai.carregaDados() : i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()");
99   - }
100   - catch(e){
101   - i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()");
102   - if(typeof(console) !== 'undefined'){console.error("i3GEO.analise.linhaDoTempo "+e);}
103   - }
104   - };
105   - if(i3GEO.eventos.NAVEGAMAPA.toString().search("atualizaLinhaDoTempo()") < 0)
106   - {i3GEO.eventos.NAVEGAMAPA.push("atualizaLinhaDoTempo()");}
107   - var ifr = $i("wdocai");
108   - //ifr.style.height = "75%";
109   - ifr.style.width = "100%";
110   - },
111   - /*
  102 + catch(e){
  103 + i3GEO.eventos.NAVEGAMAPA.remove("atualizaLinhaDoTempo()");
  104 + if(typeof(console) !== 'undefined'){console.error("i3GEO.analise.linhaDoTempo "+e);}
  105 + }
  106 + };
  107 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("atualizaLinhaDoTempo()") < 0)
  108 + {i3GEO.eventos.NAVEGAMAPA.push("atualizaLinhaDoTempo()");}
  109 + var ifr = $i("wdocai");
  110 + //ifr.style.height = "75%";
  111 + ifr.style.width = "100%";
  112 + },
  113 + /*
112 114 Function: perfil
113 115  
114 116 Abre a janela de dialogo da ferramenta perfil
115   - */
116   - perfil: function(){
117   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.perfil()","perfil","perfil");
118   - },
119   - /*
  117 + */
  118 + perfil: function(){
  119 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.perfil()","perfil","perfil");
  120 + },
  121 + /*
120 122 Function: gradePontos
121 123  
122 124 Abre a janela de dialogo da ferramenta gradepontos
123   - */
124   - gradePontos: function(){
125   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePontos()","gradepontos","gradeDePontos");
126   - },
127   - /*
  125 + */
  126 + gradePontos: function(){
  127 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePontos()","gradepontos","gradeDePontos");
  128 + },
  129 + /*
128 130 Function: gradePol
129 131  
130 132 Abre a janela de dialogo da ferramenta gradepol
131   - */
132   - gradePol: function(){
133   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePol()","gradepol","gradeDePoligonos");
134   - },
135   - /*
  133 + */
  134 + gradePol: function(){
  135 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradePol()","gradepol","gradeDePoligonos");
  136 + },
  137 + /*
136 138 Function: gradeHex
137 139  
138 140 Abre a janela de dialogo da ferramenta gradehex
139   - */
140   - gradeHex: function(){
141   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradeHex()","gradehex","gradeDeHex");
142   - },
143   - /*
  141 + */
  142 + gradeHex: function(){
  143 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.gradeHex()","gradehex","gradeDeHex");
  144 + },
  145 + /*
144 146 Function: analisaGeometrias
145 147  
146 148 Abre a janela de dialogo da ferramenta analisageometrias
147   - */
148   - analisaGeometrias: function(){
149   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.analisaGeometrias()","analisageometrias","analisaGeometrias");
150   - },
151   - /*
  149 + */
  150 + analisaGeometrias: function(){
  151 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.analisaGeometrias()","analisageometrias","analisaGeometrias");
  152 + },
  153 + /*
152 154 Function: pontosdistri
153 155  
154 156 Abre a janela de dialogo da ferramenta pontosdistri
155   - */
156   - pontosdistri: function(){
157   - i3GEO.parametros.r === "nao" ? i3GEO.janela.tempoMsg($trad("x22")) : i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontosdistri()","pontosdistri","pontosDistri");
158   - },
159   - /*
  157 + */
  158 + pontosdistri: function(){
  159 + i3GEO.parametros.r === "nao" ? i3GEO.janela.tempoMsg($trad("x22")) : i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontosdistri()","pontosdistri","pontosDistri");
  160 + },
  161 + /*
160 162 Function: pontoempoligono
161 163  
162 164 Abre a janela de dialogo da ferramenta pontoempoligono
163   - */
164   - pontoempoligono: function(){
165   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontoempoligono()","pontoempoligono","pontoEmPoligono");
166   - },
167   - /*
  165 + */
  166 + pontoempoligono: function(){
  167 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.pontoempoligono()","pontoempoligono","pontoEmPoligono");
  168 + },
  169 + /*
168 170 Function: centromassa
169 171  
170 172 Abre a janela de dialogo da ferramenta centro medio
171   - */
172   - centromassa: function(){
173   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centromassa()","centromassa","centromassa");
174   - },
175   - /*
  173 + */
  174 + centromassa: function(){
  175 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centromassa()","centromassa","centromassa");
  176 + },
  177 + /*
176 178 Function: nptPol
177 179  
178 180 Abre a janela de dialogo da ferramenta nptpol
179   - */
180   - nptPol: function(){
181   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.nptPol()","nptpol","nptpol");
182   - },
183   - /*
  181 + */
  182 + nptPol: function(){
  183 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.nptPol()","nptpol","nptpol");
  184 + },
  185 + /*
184 186 Function: buffer
185 187  
186 188 Abre a janela de dialogo da ferramenta buffer
187   - */
188   - buffer: function(){
189   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.buffer()","buffer","buffer");
190   - },
191   - /*
  189 + */
  190 + buffer: function(){
  191 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.buffer()","buffer","buffer");
  192 + },
  193 + /*
192 194 Function: distanciaptpt
193 195  
194 196 Abre a janela de dialogo da ferramenta distanciaptpt
195   - */
196   - distanciaptpt: function(){
197   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.distanciaptpt()","distanciaptpt","distanciaptpt");
198   - },
199   - /*
  197 + */
  198 + distanciaptpt: function(){
  199 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.distanciaptpt()","distanciaptpt","distanciaptpt");
  200 + },
  201 + /*
200 202 Function: centroide
201 203  
202 204 Abre a janela de dialogo da ferramenta centroide
203   - */
204   - centroide: function(){
205   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centroide()","centroide","centroide");
206   - },
207   - /*
  205 + */
  206 + centroide: function(){
  207 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.centroide()","centroide","centroide");
  208 + },
  209 + /*
208 210 Function: dissolve
209 211  
210 212 Abre a janela de dialogo da ferramenta dissolve
211   - */
212   - dissolve: function(){
213   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.dissolve()","dissolve","dissolve");
214   - },
215   - /*
  213 + */
  214 + dissolve: function(){
  215 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.dissolve()","dissolve","dissolve");
  216 + },
  217 + /*
216 218 Function: agrupaElementos
217 219  
218 220 Abre a janela de dialogo da ferramenta agrupaelementos
219   - */
220   - agrupaElementos: function(){
221   - i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.agrupaElementos()","agrupaelementos","agrupaElementos");
222   - }
223   - },
224   - /*
  221 + */
  222 + agrupaElementos: function(){
  223 + i3GEO.util.dialogoFerramenta("i3GEO.analise.dialogo.agrupaElementos()","agrupaelementos","agrupaElementos");
  224 + }
  225 + },
  226 + /*
225 227 Classe: i3GEO.analise.medeDistancia
226 228  
227 229 Ativa e controla a opcao de medicao de distancias.
... ... @@ -231,243 +233,293 @@ i3GEO.analise = {
231 233 Quando o botao e acionado, abre-se a janela que mostra o resultado da medida, o icone que segue o mouse e alterado.
232 234  
233 235 Para mostrar o resultado do calculo, e incluido um div especifico.
234   - */
235   - medeDistancia:{
236   - /*
  236 + */
  237 + medeDistancia:{
  238 + /*
237 239 Function: inicia
238 240  
239 241 Inicia a operacao de medicao, abrindo a janela de resultados e criando os componentes necessorios
240 242  
241 243 Sao registrados os eventos de clique sobre o mapa e fechamento da janela de resultados
242   - */
243   - inicia: function(){
244   - if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeDistancia.inicia()");}
245   - i3GEO.eventos.cliquePerm.desativa();
246   - pontosdistobj = {
247   - xpt: [],
248   - ypt: [],
249   - dist: [],
250   - distV: [],
251   - xtela: [],
252   - ytela: [],
253   - ximg: [],
254   - yimg: [],
255   - linhas: [],
256   - linhastemp: []
257   - };
258   - i3GEO.analise.medeDistancia.criaJanela();
259   - if (g_tipoacao !== "mede"){
260   - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)
261   - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}
262   - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)
263   - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}
264   - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
265   - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
266   - $i("mostradistancia").style.display="block";
267   - if(i3GEO.Interface.ATUAL !== "googleearth"){
268   - i3GEO.desenho.criaContainerRichdraw();
269   - i3GEO.desenho.richdraw.lineColor = "black";
270   - i3GEO.desenho.richdraw.lineWidth = "2px";
271   - }
272   - g_tipoacao = "mede";
273   - }
274   - else{
275   - if(i3GEO.Interface.ATUAL !== "googleearth")
276   - {i3GEO.desenho.richdraw.fecha();}
277   - var Dom = YAHOO.util.Dom;
278   - Dom.setStyle("mostradistancia","display","none");
279   - Dom.setStyle("pontosins","display","none");
280   - }
281   - },
282   - /*
  244 + */
  245 + inicia: function(){
  246 + if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeDistancia.inicia()");}
  247 + i3GEO.eventos.cliquePerm.desativa();
  248 + i3GEO.analise.pontosdistobj = {
  249 + xpt: [],
  250 + ypt: [],
  251 + dist: [],
  252 + distV: [],
  253 + xtela: [],
  254 + ytela: [],
  255 + ximg: [],
  256 + yimg: [],
  257 + linhas: [],
  258 + linhastemp: []
  259 + };
  260 + i3GEO.analise.medeDistancia.criaJanela();
  261 + i3GEO.analise.i3GEO.Interface["ATUAL"].inicia();
  262 + },
  263 + /*
283 264 Cria a janela para mostrar os resultados da medicao
284   - */
285   - criaJanela: function(){
286   - var novoel,ins,imagemxy,janela;
287   - if (!$i("mostradistancia")){
288   - novoel = document.createElement("div");
289   - novoel.id = "mostradistancia";
290   - ins = '<div class="hd" style="font-size:11px">&nbsp;Dist&acirc;ncia aproximada <a class=ajuda_usuario target=_blank href="'+i3GEO.configura.locaplic+'/ajuda_usuario.php?idcategoria=6&idajuda=50" >&nbsp;&nbsp;&nbsp;</a></div>' +
291   - '<div class="bd" style="text-align:left;padding:3px;" >' +
292   - '<div style="text-align:left;padding:3px;" id="mostradistancia_calculo" ></div>' +
293   - '<div style="text-align:left;font-size:10px" >' +
294   - '<span style="color:navy;cursor:pointer;text-align:left;" >' +
295   - '<table class=lista7 ><tr><td><input style="cursor:pointer" type="checkbox" id="pararraios" checked /></td><td>Raios</td><td>&nbsp;</td>' +
296   - '<td>' +
297   - '<input style="cursor:pointer" type="checkbox" id="parartextos" checked />' +
298   - '</td><td>Textos<td>' +
299   - '<td>&nbsp;Estilo:</td><td>'+i3GEO.desenho.caixaEstilos()+'</td>' +
300   - '<td>&nbsp;<input id=i3GEObotaoPerfil size="22" type="button" value="perfil"></td>' +
301   - '</tr></table></span>' +
302   - '</div>' +
303   - '</div>';
304   - novoel.innerHTML = ins;
305   - novoel.style.borderColor="gray";
306   - document.body.appendChild(novoel);
307   - janela = new YAHOO.widget.Panel("mostradistancia", {iframe:true,width:"330px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } );
308   - YAHOO.i3GEO.janela.manager.register(janela);
309   - janela.render();
310   - YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeDistancia.fechaJanela);
311   - }
312   - else{
313   - i3GEO.util.defineValor("mostradistancia_calculo","innerHTML","");
314   - janela = YAHOO.i3GEO.janela.manager.find("mostradistancia");
315   - }
316   - janela.show();
317   - imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
318   - janela.moveTo(imagemxy[0]+150,imagemxy[1]);
319   - if(navm && i3GEO.Interface.ATUAL === "googleearth" ){
320   - janela.moveTo(0,0);
321   - }
322   - //
323   - //botao que abre a ferramenta de calculo de perfis.
324   - //pontosdistobj contem as coordenadas dos pontos
325   - //
326   - new YAHOO.widget.Button(
327   - "i3GEObotaoPerfil",
328   - {onclick:{fn: function(){
329   - var js = i3GEO.configura.locaplic+"/ferramentas/perfil/index.js";
330   - i3GEO.util.scriptTag(js,"i3GEOF.perfil.criaJanelaFlutuante(pontosdistobj)","i3GEOF.perfil_script");
331   - }}}
332   - );
333   - },
334   - /*
  265 + */
  266 + criaJanela: function(){
  267 + var novoel,ins,imagemxy,janela;
  268 + if (!$i("mostradistancia")){
  269 + novoel = document.createElement("div");
  270 + novoel.id = "mostradistancia";
  271 + ins = '<div class="hd" style="font-size:11px">&nbsp;Dist&acirc;ncia aproximada <a class=ajuda_usuario target=_blank href="'+i3GEO.configura.locaplic+'/ajuda_usuario.php?idcategoria=6&idajuda=50" >&nbsp;&nbsp;&nbsp;</a></div>' +
  272 + '<div class="bd" style="text-align:left;padding:3px;" >' +
  273 + '<div style="text-align:left;padding:3px;" id="mostradistancia_calculo" ></div>' +
  274 + '<div style="text-align:left;font-size:10px" >' +
  275 + '<span style="color:navy;cursor:pointer;text-align:left;" >' +
  276 + '<table class=lista7 ><tr><td><input style="cursor:pointer" type="checkbox" id="pararraios" checked /></td><td>Raios</td><td>&nbsp;</td>' +
  277 + '<td>' +
  278 + '<input style="cursor:pointer" type="checkbox" id="parartextos" checked />' +
  279 + '</td><td>Textos<td>' +
  280 + '<td>&nbsp;Estilo:</td><td>'+i3GEO.desenho.caixaEstilos()+'</td>' +
  281 + '<td>&nbsp;<input id=i3GEObotaoPerfil size="22" type="button" value="perfil"></td>' +
  282 + '</tr></table></span>' +
  283 + '</div>' +
  284 + '</div>';
  285 + novoel.innerHTML = ins;
  286 + novoel.style.borderColor="gray";
  287 + document.body.appendChild(novoel);
  288 + janela = new YAHOO.widget.Panel("mostradistancia", {iframe:true,width:"330px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } );
  289 + YAHOO.i3GEO.janela.manager.register(janela);
  290 + janela.render();
  291 + YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeDistancia.fechaJanela);
  292 + }
  293 + else{
  294 + i3GEO.util.defineValor("mostradistancia_calculo","innerHTML","");
  295 + janela = YAHOO.i3GEO.janela.manager.find("mostradistancia");
  296 + }
  297 + janela.show();
  298 + imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
  299 + janela.moveTo(imagemxy[0]+150,imagemxy[1]);
  300 + //
  301 + //botao que abre a ferramenta de calculo de perfis.
  302 + //pontosdistobj contem as coordenadas dos pontos
  303 + //
  304 + new YAHOO.widget.Button(
  305 + "i3GEObotaoPerfil",
  306 + {onclick:{fn: function(){
  307 + var js = i3GEO.configura.locaplic+"/ferramentas/perfil/index.js";
  308 + i3GEO.util.scriptTag(js,"i3GEOF.perfil.criaJanelaFlutuante(i3GEO.analise.pontosdistobj)","i3GEOF.perfil_script");
  309 + }}}
  310 + );
  311 + },
  312 + /*
335 313 Function: fechaJanela
336 314  
337 315 Fecha a janela e os elementos graficos criados para a ferramenta de medicao
338   - */
339   - fechaJanela: function(){
340   - var janela;
341   - i3GEO.eventos.cliquePerm.ativa();
342   - i3GEO.Interface.ATUAL !== "googleearth" ? i3GEO.desenho.richdraw.fecha() : i3GEO.Interface.googleearth.removePlacemark("divGeometriasTemp");
343   - i3GEO.util.removeChild("pontosins");
344   - if($i("divGeometriasTemp"))
345   - {i3GEO.desenho.richdraw.fecha();}
346   - i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.clique()");
347   - i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento()");
348   - i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()");
349   - i3GEO.barraDeBotoes.ativaBotoes();
350   - janela = YAHOO.i3GEO.janela.manager.find("mostradistancia");
351   - if(janela){
352   - YAHOO.i3GEO.janela.manager.remove(janela);
353   - janela.destroy();
354   - }
355   - i3GEO.barraDeBotoes.ativaIcone("pointer");
356   - },
357   - /*
358   - Adiciona uma marca na tela e realiza o calculo de distancia dos pontos inseridos
359   - */
360   - clique: function(){
361   - var n,d,decimal,dd;
362   - if (g_tipoacao === "mede"){
363   - n = pontosdistobj.xpt.length;
364   - pontosdistobj.xpt[n] = objposicaocursor.ddx;
365   - pontosdistobj.ypt[n] = objposicaocursor.ddy;
366   - pontosdistobj.xtela[n] = objposicaocursor.telax;
367   - pontosdistobj.ytela[n] = objposicaocursor.telay;
368   - pontosdistobj.ximg[n] = objposicaocursor.imgx;
369   - pontosdistobj.yimg[n] = objposicaocursor.imgy;
370   - pontosdistobj.dist[n] = 0;
371   - //cria a linha que sera utilizada para seguir a posicao do mouse e o ultimo ponto
372   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
373   - try{
374   - pontosdistobj.linhas[n] = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n]-1),(pontosdistobj.yimg[n]-1),(pontosdistobj.ximg[n]-1),(pontosdistobj.yimg[n]-1));
375   - }
376   - catch(e){
377   - if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho.richdraw "+e);}
378   - }
  316 + */
  317 + fechaJanela: function(){
  318 + var janela;
  319 + i3GEO.eventos.cliquePerm.ativa();
  320 + i3GEO.Interface.ATUAL !== "googleearth" ? i3GEO.desenho.richdraw.fecha() : i3GEO.Interface.googleearth.removePlacemark("divGeometriasTemp");
  321 + i3GEO.util.removeChild("pontosins");
  322 + if($i("divGeometriasTemp"))
  323 + {i3GEO.desenho.richdraw.fecha();}
  324 + i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.clique()");
  325 + i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento()");
  326 + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()");
  327 + i3GEO.barraDeBotoes.ativaBotoes();
  328 + janela = YAHOO.i3GEO.janela.manager.find("mostradistancia");
  329 + if(janela){
  330 + YAHOO.i3GEO.janela.manager.remove(janela);
  331 + janela.destroy();
379 332 }
380   - if (n > 0){
381   - d = i3GEO.calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
382   - decimal = 0;
383   - d = d + "";
384   - d = d.split(".");
385   - decimal = d[1].substr(0,5);
386   - d = d[0]+"."+decimal;
387   - d = d * 1;
388   - pontosdistobj.dist[n] = d + pontosdistobj.dist[n-1];
389   - if(navm)
390   - {i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1]),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n]),pontosdistobj.yimg[n]);}
391   - if($i("pararraios") && $i("pararraios").checked === true ){
392   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
393   - i3GEO.desenho.aplica("insereCirculo","",n);
394   - }
395   - if(i3GEO.Interface.ATUAL === "googleearth"){
396   - dd = Math.sqrt(((Math.pow((pontosdistobj.xpt[n] - pontosdistobj.xpt[n-1]),2)) + (Math.pow((pontosdistobj.ypt[n] - pontosdistobj.ypt[n-1]),2)) ));
397   - i3GEO.Interface.googleearth.insereCirculo(pontosdistobj.xpt[n],pontosdistobj.ypt[n],dd,"","divGeometriasTemp");
  333 + i3GEO.barraDeBotoes.ativaIcone("pointer");
  334 + },
  335 + openlayers:{
  336 + inicia: function(){
  337 + if (g_tipoacao !== "mede"){
  338 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)
  339 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}
  340 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)
  341 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}
  342 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
  343 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
  344 + $i("mostradistancia").style.display="block";
  345 + if(i3GEO.Interface.ATUAL !== "googleearth"){
  346 + i3GEO.desenho.criaContainerRichdraw();
  347 + i3GEO.desenho.richdraw.lineColor = "black";
  348 + i3GEO.desenho.richdraw.lineWidth = "2px";
398 349 }
  350 + g_tipoacao = "mede";
399 351 }
400   - if($i("parartextos") && $i("parartextos").checked === true ){
401   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
402   - i3GEO.desenho.aplica("insereTexto","",n+1,d+" km");
403   - }
404   - if(i3GEO.Interface.ATUAL === "googleearth")
405   - {i3GEO.Interface.googleearth.insereMarca(d+" km",objposicaocursor.ddx,objposicaocursor.ddy,"","divGeometriasTemp");}
  352 + else{
  353 + if(i3GEO.Interface.ATUAL !== "googleearth")
  354 + {i3GEO.desenho.richdraw.fecha();}
  355 + var Dom = YAHOO.util.Dom;
  356 + Dom.setStyle("mostradistancia","display","none");
  357 + Dom.setStyle("pontosins","display","none");
406 358 }
407   - //cria a linha ligando os dois ultimos pontos
408   - if(i3GEO.Interface.ATUAL === "googleearth"){
409   - i3GEO.Interface.googleearth.insereLinha(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],pontosdistobj.xpt[n],pontosdistobj.ypt[n],"","divGeometriasTemp");
  359 + }
  360 + },
  361 + googlemaps:{
  362 + inicia: function(){
  363 + if (g_tipoacao !== "mede"){
  364 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)
  365 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}
  366 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)
  367 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}
  368 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
  369 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
  370 + $i("mostradistancia").style.display="block";
  371 + i3GEO.desenho.criaContainerRichdraw();
  372 + i3GEO.desenho.richdraw.lineColor = "black";
  373 + i3GEO.desenho.richdraw.lineWidth = "2px";
  374 + g_tipoacao = "mede";
  375 + }
  376 + else{
  377 + i3GEO.desenho.richdraw.fecha();
  378 + var Dom = YAHOO.util.Dom;
  379 + Dom.setStyle("mostradistancia","display","none");
  380 + Dom.setStyle("pontosins","display","none");
410 381 }
411 382 }
412   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
413   - i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeDistancia.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);
414   - i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");
  383 + },
  384 + googleearth:{
  385 + inicia: function(){
  386 + if (g_tipoacao !== "mede"){
  387 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)
  388 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}
  389 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)
  390 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}
  391 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
  392 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
  393 + $i("mostradistancia").style.display="block";
  394 + g_tipoacao = "mede";
  395 + }
  396 + else{
  397 + var Dom = YAHOO.util.Dom;
  398 + Dom.setStyle("mostradistancia","display","none");
  399 + Dom.setStyle("pontosins","display","none");
  400 + }
415 401 }
416   - }
417   - },
418   - /*
419   - Para o calculo de distancias e ativa o botao "pan"
420   - */
421   - paraCalculo: function(){
422   - var botaoPan = $i("pan");
423   - g_tipoacao = "";
424   - botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();
425   - },
426   - /*
427   - Realiza os calculos e desenho da linha conforme o usuario movimenta o mouse
428   - */
429   - movimento: function(){
430   - var n,d,r,decimal,da,mostra,texto,
431   - //pontosdistobj = i3GEO.analise.medeDistancia.pontosdistobj,
432   - calculo = i3GEO.calculo;
433   - if (g_tipoacao === "mede"){
434   - YAHOO.util.Dom.setStyle("mostradistancia","display","block");
435   - n = pontosdistobj.xpt.length;
436   - try{
437   - //console.info(objposicaocursor.ddx);
438   - if (n > 0){
439   - d = calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
440   - r = calculo.direcao(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
441   - r = calculo.dd2dms(r,r);
442   - r = r[0];
  402 + },
  403 +
  404 +
443 405  
  406 +
  407 + //////////////////////////////////////
  408 + /*
  409 + Adiciona uma marca na tela e realiza o calculo de distancia dos pontos inseridos
  410 + */
  411 + clique: function(){
  412 + var n,d,decimal,dd,
  413 + pontosdistobj = i3GEO.analise.pontosdistobj;
  414 + if (g_tipoacao === "mede"){
  415 + n = pontosdistobj.xpt.length;
  416 + pontosdistobj.xpt[n] = objposicaocursor.ddx;
  417 + pontosdistobj.ypt[n] = objposicaocursor.ddy;
  418 + pontosdistobj.xtela[n] = objposicaocursor.telax;
  419 + pontosdistobj.ytela[n] = objposicaocursor.telay;
  420 + pontosdistobj.ximg[n] = objposicaocursor.imgx;
  421 + pontosdistobj.yimg[n] = objposicaocursor.imgy;
  422 + pontosdistobj.dist[n] = 0;
  423 + //cria a linha que sera utilizada para seguir a posicao do mouse e o ultimo ponto
  424 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  425 + try{
  426 + pontosdistobj.linhas[n] = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n]-1),(pontosdistobj.yimg[n]-1),(pontosdistobj.ximg[n]-1),(pontosdistobj.yimg[n]-1));
  427 + }
  428 + catch(e){
  429 + if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho.richdraw "+e);}
  430 + }
  431 + }
  432 + if (n > 0){
  433 + d = i3GEO.calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  434 + decimal = 0;
444 435 d = d + "";
445 436 d = d.split(".");
446 437 decimal = d[1].substr(0,5);
447 438 d = d[0]+"."+decimal;
448 439 d = d * 1;
449   - da = d + pontosdistobj.dist[n-1];
450   - da = da + "";
451   - da = da.split(".");
452   - decimal = da[1].substr(0,5);
453   - da = da[0]+"."+decimal;
454   - da = da * 1;
455   -
456   - mostra = $i("mostradistancia_calculo");
457   - if (mostra){
458   - texto = " Dist acum.= "+da+" km <br>atual= "+d+" km <br> "+$trad("x23")+" (DMS)= "+r;
459   - texto += "<br>"+$trad("x25")+": "+calculo.metododistancia;
460   - mostra.innerHTML = texto;
  440 + pontosdistobj.dist[n] = d + pontosdistobj.dist[n-1];
  441 + if(navm)
  442 + {i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1]),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n]),pontosdistobj.yimg[n]);}
  443 + if($i("pararraios") && $i("pararraios").checked === true ){
  444 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  445 + i3GEO.desenho.aplica("insereCirculo","",n);
  446 + }
  447 + if(i3GEO.Interface.ATUAL === "googleearth"){
  448 + dd = Math.sqrt(((Math.pow((pontosdistobj.xpt[n] - pontosdistobj.xpt[n-1]),2)) + (Math.pow((pontosdistobj.ypt[n] - pontosdistobj.ypt[n-1]),2)) ));
  449 + i3GEO.Interface.googleearth.insereCirculo(pontosdistobj.xpt[n],pontosdistobj.ypt[n],dd,"","divGeometriasTemp");
  450 + }
  451 + }
  452 + if($i("parartextos") && $i("parartextos").checked === true ){
  453 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  454 + i3GEO.desenho.aplica("insereTexto","",n+1,d+" km");
  455 + }
  456 + if(i3GEO.Interface.ATUAL === "googleearth")
  457 + {i3GEO.Interface.googleearth.insereMarca(d+" km",objposicaocursor.ddx,objposicaocursor.ddy,"","divGeometriasTemp");}
  458 + }
  459 + //cria a linha ligando os dois ultimos pontos
  460 + if(i3GEO.Interface.ATUAL === "googleearth"){
  461 + i3GEO.Interface.googleearth.insereLinha(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],pontosdistobj.xpt[n],pontosdistobj.ypt[n],"","divGeometriasTemp");
  462 + }
  463 + }
  464 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  465 + i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeDistancia.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);
  466 + i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");
  467 + }
  468 + }
  469 + },
  470 + /*
  471 + Para o calculo de distancias e ativa o botao "pan"
  472 + */
  473 + paraCalculo: function(){
  474 + var botaoPan = $i("pan");
  475 + g_tipoacao = "";
  476 + botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();
  477 + },
  478 + /*
  479 + Realiza os calculos e desenho da linha conforme o usuario movimenta o mouse
  480 + */
  481 + movimento: function(){
  482 + var n,d,r,decimal,da,mostra,texto,
  483 + pontosdistobj = i3GEO.analise.pontosdistobj,
  484 + calculo = i3GEO.calculo;
  485 + if (g_tipoacao === "mede"){
  486 + YAHOO.util.Dom.setStyle("mostradistancia","display","block");
  487 + n = pontosdistobj.xpt.length;
  488 + try{
  489 + //console.info(objposicaocursor.ddx);
  490 + if (n > 0){
  491 + d = calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  492 + r = calculo.direcao(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  493 + r = calculo.dd2dms(r,r);
  494 + r = r[0];
  495 +
  496 + d = d + "";
  497 + d = d.split(".");
  498 + decimal = d[1].substr(0,5);
  499 + d = d[0]+"."+decimal;
  500 + d = d * 1;
  501 + da = d + pontosdistobj.dist[n-1];
  502 + da = da + "";
  503 + da = da.split(".");
  504 + decimal = da[1].substr(0,5);
  505 + da = da[0]+"."+decimal;
  506 + da = da * 1;
  507 +
  508 + mostra = $i("mostradistancia_calculo");
  509 + if (mostra){
  510 + texto = " Dist acum.= "+da+" km <br>atual= "+d+" km <br> "+$trad("x23")+" (DMS)= "+r;
  511 + texto += "<br>"+$trad("x25")+": "+calculo.metododistancia;
  512 + mostra.innerHTML = texto;
  513 + }
  514 + if(i3GEO.Interface.ATUAL !== "googleearth" && navn)
  515 + {i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n);}
461 516 }
462   - if(i3GEO.Interface.ATUAL !== "googleearth" && navn)
463   - {i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n);}
464 517 }
  518 + catch(e){}
465 519 }
466   - catch(e){}
467 520 }
468   - }
469   - },
470   - /*
  521 + },
  522 + /*
471 523 Classe: i3GEO.analise.medeArea
472 524  
473 525 Ativa e controla a opcao de medicao de area.
... ... @@ -477,32 +529,32 @@ i3GEO.analise = {
477 529 Quando o botao e acionado, abre-se a janela que mostra o resultado da medida, o icone que segue o mouse e alterado.
478 530  
479 531 Para mostrar o resultado do calculo, e incluido um div especifico.
480   - */
481   - medeArea:{
482   - /*
  532 + */
  533 + medeArea:{
  534 + /*
483 535 Function: inicia
484 536  
485 537 Inicia a operacao de medicao, abrindo a janela de resultados e criando os componentes necessarios
486 538  
487 539 Sao registrados os eventos de clique sobre o mapa e fechamento da janela de resultados
488   - */
489   - inicia: function(){
490   - if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeArea.inicia()");}
491   - i3GEO.eventos.cliquePerm.desativa();
492   - pontosdistobj = {
493   - xpt: [],
494   - ypt: [],
495   - dist: [],
496   - distV: [],
497   - xtela: [],
498   - ytela: [],
499   - ximg: [],
500   - yimg: [],
501   - linhas: [],
502   - linhastemp: []
503   - };
504   - var x,y,ll1,ll2,d,
505   - calculo = i3GEO.calculo,
  540 + */
  541 + inicia: function(){
  542 + if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeArea.inicia()");}
  543 + i3GEO.eventos.cliquePerm.desativa();
  544 + i3GEO.analise.pontosdistobj = {
  545 + xpt: [],
  546 + ypt: [],
  547 + dist: [],
  548 + distV: [],
  549 + xtela: [],
  550 + ytela: [],
  551 + ximg: [],
  552 + yimg: [],
  553 + linhas: [],
  554 + linhastemp: []
  555 + };
  556 + var x,y,ll1,ll2,d,
  557 + calculo = i3GEO.calculo,
506 558 montacontainer = function(){
507 559 var desenho = i3GEO.desenho;
508 560 $i("mostraarea_calculo").innerHTML = "Clique no mapa para desenhar o poligono. Clique duas vezes para concluir";
... ... @@ -512,149 +564,150 @@ i3GEO.analise = {
512 564 desenho.richdraw.lineColor = "green";
513 565 desenho.richdraw.lineWidth = "2px";
514 566 };
515   - i3GEO.analise.medeArea.criaJanela();
516   - if (g_tipoacao !== "area"){
517   - $i("mostraarea_calculo").innerHTML = "";
518   - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)
519   - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}
520   - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)
521   - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}
522   - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)
523   - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}
524   - //
525   - //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel
526   - //essa funcao e embutida em i3GEO.calculo.tela2dd
527   - //
528   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
529   - x = parseInt(i3GEO.parametros.w / 2,10);
530   - y = parseInt(i3GEO.parametros.h / 2,10);
531   - ll1 = calculo.tela2dd(x,y,"","");
532   - ll2 = calculo.tela2dd(x + 1,y,"","");
533   - d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);
534   - d = d * 1000;
535   - g_areapixel = d * d;
536   - g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer();
  567 + i3GEO.analise.medeArea.criaJanela();
  568 + if (g_tipoacao !== "area"){
  569 + $i("mostraarea_calculo").innerHTML = "";
  570 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)
  571 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}
  572 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)
  573 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}
  574 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)
  575 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}
  576 + //
  577 + //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel
  578 + //essa funcao e embutida em i3GEO.calculo.tela2dd
  579 + //
  580 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  581 + x = parseInt(i3GEO.parametros.w / 2,10);
  582 + y = parseInt(i3GEO.parametros.h / 2,10);
  583 + ll1 = calculo.tela2dd(x,y,"","");
  584 + ll2 = calculo.tela2dd(x + 1,y,"","");
  585 + d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);
  586 + d = d * 1000;
  587 + g_areapixel = d * d;
  588 + g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer();
  589 + }
537 590 }
538   - }
539   - else{i3GEO.desenho.richdraw.fecha();}
540   - },
541   - /*
  591 + else{i3GEO.desenho.richdraw.fecha();}
  592 + },
  593 + /*
542 594 Cria a janela para mostrar os resultados da medicao
543   - */
544   - criaJanela: function(){
545   - var novoel,ins,imagemxy,janela;
546   - if (!$i("mostraarea")){
547   - novoel = document.createElement("div");
548   - novoel.id = "mostraarea";
549   - ins = '<div class="hd" >&Aacute;rea aproximada <a class=ajuda_usuario target=_blank href="'+i3GEO.configura.locaplic+'"/ajuda_usuario.php?idcategoria=6&idajuda=51" >&nbsp;&nbsp;&nbsp;</a></div>' +
550   - '<div class="bd" style="text-align:left;padding:3px;font-size:10px" >' +
551   - 'Estilo: '+i3GEO.desenho.caixaEstilos()+'<br>' +
552   - '<div style="text-align:left;padding:3px;font-size:10px" id="mostraarea_calculo" ></div>' +
553   - '</div>';
554   - novoel.innerHTML = ins;
555   - novoel.style.borderColor="gray";
556   - document.body.appendChild(novoel);
557   - janela = new YAHOO.widget.Panel("mostraarea", {width:"220px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } );
558   - YAHOO.i3GEO.janela.manager.register(janela);
559   - janela.render();
560   - YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeArea.fechaJanela);
561   - }
562   - else{
563   - janela = YAHOO.i3GEO.janela.manager.find("mostraarea");
564   - }
565   - janela.show();
566   - imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
567   - janela.moveTo(imagemxy[0]+150,imagemxy[1]);
568   - },
569   - /*
  595 + */
  596 + criaJanela: function(){
  597 + var novoel,ins,imagemxy,janela;
  598 + if (!$i("mostraarea")){
  599 + novoel = document.createElement("div");
  600 + novoel.id = "mostraarea";
  601 + ins = '<div class="hd" >&Aacute;rea aproximada <a class=ajuda_usuario target=_blank href="'+i3GEO.configura.locaplic+'"/ajuda_usuario.php?idcategoria=6&idajuda=51" >&nbsp;&nbsp;&nbsp;</a></div>' +
  602 + '<div class="bd" style="text-align:left;padding:3px;font-size:10px" >' +
  603 + 'Estilo: '+i3GEO.desenho.caixaEstilos()+'<br>' +
  604 + '<div style="text-align:left;padding:3px;font-size:10px" id="mostraarea_calculo" ></div>' +
  605 + '</div>';
  606 + novoel.innerHTML = ins;
  607 + novoel.style.borderColor="gray";
  608 + document.body.appendChild(novoel);
  609 + janela = new YAHOO.widget.Panel("mostraarea", {width:"220px",fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } );
  610 + YAHOO.i3GEO.janela.manager.register(janela);
  611 + janela.render();
  612 + YAHOO.util.Event.addListener(janela.close, "click", i3GEO.analise.medeArea.fechaJanela);
  613 + }
  614 + else{
  615 + janela = YAHOO.i3GEO.janela.manager.find("mostraarea");
  616 + }
  617 + janela.show();
  618 + imagemxy = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
  619 + janela.moveTo(imagemxy[0]+150,imagemxy[1]);
  620 + },
  621 + /*
570 622 Function: fechaJanela
571 623  
572 624 Fecha a janela e os elementos graficos criados para a ferramenta de medicao
573   - */
574   - fechaJanela: function(){
575   - var janela;
576   - i3GEO.eventos.cliquePerm.ativa();
577   - i3GEO.desenho.richdraw.fecha();
578   - i3GEO.util.removeChild("pontosArea",document.body);
579   - i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeArea.clique()");
580   - i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeArea.movimento()");
581   - i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeArea.fechaJanela()");
582   - i3GEO.barraDeBotoes.ativaBotoes();
583   - janela = YAHOO.i3GEO.janela.manager.find("mostraarea");
584   - if(janela){
585   - YAHOO.i3GEO.janela.manager.remove(janela);
586   - janela.destroy();
587   - }
588   - i3GEO.barraDeBotoes.ativaIcone("pointer");
589   - },
590   - /*
  625 + */
  626 + fechaJanela: function(){
  627 + var janela;
  628 + i3GEO.eventos.cliquePerm.ativa();
  629 + i3GEO.desenho.richdraw.fecha();
  630 + i3GEO.util.removeChild("pontosArea",document.body);
  631 + i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeArea.clique()");
  632 + i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeArea.movimento()");
  633 + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeArea.fechaJanela()");
  634 + i3GEO.barraDeBotoes.ativaBotoes();
  635 + janela = YAHOO.i3GEO.janela.manager.find("mostraarea");
  636 + if(janela){
  637 + YAHOO.i3GEO.janela.manager.remove(janela);
  638 + janela.destroy();
  639 + }
  640 + i3GEO.barraDeBotoes.ativaIcone("pointer");
  641 + },
  642 + /*
591 643 Adiciona uma marca na tela e realiza o calculo de distancia dos pontos inseridos
592   - */
593   - clique: function(){
594   - var n,m;
595   - //pontosdistobj = i3GEO.analise.medeArea.pontosdistobj;
596   - if (g_tipoacao === "area"){
597   - n = pontosdistobj.xpt.length;
598   - pontosdistobj.xpt[n] = objposicaocursor.ddx;
599   - pontosdistobj.ypt[n] = objposicaocursor.ddy;
600   - pontosdistobj.xtela[n] = objposicaocursor.telax;
601   - pontosdistobj.ytela[n] = objposicaocursor.telay;
602   - pontosdistobj.ximg[n] = objposicaocursor.imgx;
603   - pontosdistobj.yimg[n] = objposicaocursor.imgy;
604   - pontosdistobj.dist[n] = 0;
605   - //inclui a linha para ligar com o ponto inicial
606   - if (n === 0){
607   - try {
608   - pontosdistobj.linhastemp = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1,pontosdistobj.ximg[0]-1,pontosdistobj.yimg[0]-1);
  644 + */
  645 + clique: function(){
  646 + var n,m;
  647 + pontosdistobj = i3GEO.analise.pontosdistobj;
  648 + if (g_tipoacao === "area"){
  649 + n = pontosdistobj.xpt.length;
  650 + pontosdistobj.xpt[n] = objposicaocursor.ddx;
  651 + pontosdistobj.ypt[n] = objposicaocursor.ddy;
  652 + pontosdistobj.xtela[n] = objposicaocursor.telax;
  653 + pontosdistobj.ytela[n] = objposicaocursor.telay;
  654 + pontosdistobj.ximg[n] = objposicaocursor.imgx;
  655 + pontosdistobj.yimg[n] = objposicaocursor.imgy;
  656 + pontosdistobj.dist[n] = 0;
  657 + //inclui a linha para ligar com o ponto inicial
  658 + if (n === 0){
  659 + try {
  660 + pontosdistobj.linhastemp = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1,pontosdistobj.ximg[0]-1,pontosdistobj.yimg[0]-1);
  661 + }
  662 + catch(e){
  663 + if(typeof(console) !== 'undefined'){console.error(e);}
  664 + }
609 665 }
610   - catch(e){
611   - if(typeof(console) !== 'undefined'){console.error(e);}
  666 + else{
  667 + if(navm)
  668 + {i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1]),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n]),pontosdistobj.yimg[n]);}
  669 + //parece qe tem um problema de versao do ie aqui
  670 + //if(navm)
  671 + //{i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1])-(i3GEO.parametros.w/2),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n])-(i3GEO.parametros.w/2),pontosdistobj.yimg[n]);}
612 672 }
  673 + try{
  674 + pontosdistobj.linhas[n] = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1,pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1);
  675 + }
  676 + catch(men){
  677 + if(typeof(console) !== 'undefined'){console.error(men);}
  678 + }
  679 + m = i3GEO.calculo.area(pontosdistobj.xtela,pontosdistobj.ytela,g_areapixel);
  680 + i3GEO.util.defineValor("mostraarea_calculo","innerHTML","<br>m2</b>= "+m.toFixed(2)+"<br><b>km2</b>= "+(m/1000000).toFixed(2)+"<br><b>ha</b>= "+(m/10000).toFixed(2));
  681 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  682 + i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);
  683 + i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");
  684 + }
  685 + if(i3GEO.Interface.ATUAL === "googleearth")
  686 + {i3GEO.util.insereMarca.cria(objposicaocursor.ddx,objposicaocursor.ddy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","");}
613 687 }
614   - else{
615   - if(navm)
616   - {i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1]),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n]),pontosdistobj.yimg[n]);}
617   - //parece qe tem um problema de versao do ie aqui
618   - //if(navm)
619   - //{i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, (pontosdistobj.ximg[n-1])-(i3GEO.parametros.w/2),pontosdistobj.yimg[n-1],(pontosdistobj.ximg[n])-(i3GEO.parametros.w/2),pontosdistobj.yimg[n]);}
620   - }
621   - try{
622   - pontosdistobj.linhas[n] = i3GEO.desenho.richdraw.renderer.create(i3GEO.desenho.richdraw.mode, i3GEO.desenho.richdraw.fillColor, i3GEO.desenho.richdraw.lineColor, i3GEO.desenho.richdraw.lineWidth, pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1,pontosdistobj.ximg[n]-1,pontosdistobj.yimg[n]-1);
623   - }
624   - catch(men){
625   - if(typeof(console) !== 'undefined'){console.error(men);}
626   - }
627   - m = i3GEO.calculo.area(pontosdistobj,g_areapixel);
628   - i3GEO.util.defineValor("mostraarea_calculo","innerHTML","<br>m2</b>= "+m.toFixed(2)+"<br><b>km2</b>= "+(m/1000000).toFixed(2)+"<br><b>ha</b>= "+(m/10000).toFixed(2));
629   - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
630   - i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);
631   - i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");
632   - }
633   - if(i3GEO.Interface.ATUAL === "googleearth")
634   - {i3GEO.util.insereMarca.cria(objposicaocursor.ddx,objposicaocursor.ddy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","");}
635   - }
636   - },
637   - /*
  688 + },
  689 + /*
638 690 Para o calculo de area e ativa o botao "pan"
639   - */
640   - paraCalculo: function(){
641   - var botaoPan = $i("pan");
642   - g_tipoacao = "";
643   - botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();
644   - },
645   - /*
  691 + */
  692 + paraCalculo: function(){
  693 + var botaoPan = $i("pan");
  694 + g_tipoacao = "";
  695 + botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();
  696 + },
  697 + /*
646 698 Realiza o desenho do poligono conforme o usuario movimenta o mouse
647   - */
648   - movimento: function(){
649   - var n;
650   - if (g_tipoacao === "area"){
651   - n = pontosdistobj.xpt.length;
652   - if (n > 0){
653   - i3GEO.desenho.aplica("resizePoligono",pontosdistobj.linhastemp,1);
654   - i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n);
  699 + */
  700 + movimento: function(){
  701 + var n,
  702 + pontosdistobj = i3GEO.analise.pontosdistobj;
  703 + if (g_tipoacao === "area"){
  704 + n = pontosdistobj.xpt.length;
  705 + if (n > 0){
  706 + i3GEO.desenho.aplica("resizePoligono",pontosdistobj.linhastemp,1);
  707 + i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n);
  708 + }
655 709 }
656 710 }
657 711 }
658   - }
659 712 };
660 713 //YAHOO.log("carregou classe analise", "Classes i3geo");
661 714 \ No newline at end of file
... ...
classesjs/classe_calculo.js
... ... @@ -266,7 +266,9 @@ i3GEO.calculo = {
266 266  
267 267 Parametros:
268 268  
269   - pontos {Array} - array com a lista de pontos pontos.xtela corresponde a um array com os valores de x e pontos.ytela aos valores de y
  269 + x {Array} - array com a lista de pontos x
  270 +
  271 + y {Array} - array com a lista de pontos y
270 272  
271 273 pixel {Numeric} - &aacute;rea de cada pixel no mapa
272 274  
... ... @@ -275,21 +277,23 @@ i3GEO.calculo = {
275 277 Type:
276 278 {Numeric}
277 279 */
278   - area: function(pontos,pixel){
  280 + area: function(x,y,pixel){
279 281 if(typeof(console) !== 'undefined'){console.info("i3GEO.calculo.area()");}
280   - var $polygon_area,$i,$array_length;
  282 + var n = x.length,
  283 + $polygon_area,$i;
281 284 try{
282   - if(pontos.xpt.length > 2){
283   - $array_length = pontos.xpt.length;
284   - pontos.xtela.push(pontos.xtela[0]);
285   - pontos.ytela.push(pontos.ytela[0]);
  285 + if(n > 2){
  286 + x.push(x[0]);
  287 + y.push(y[0]);
286 288 $polygon_area = 0;
287   - for ($i=0;$i < $array_length;$i+=1)
288   - {$polygon_area += ((pontos.xtela[$i] * pontos.ytela[$i+1])-(pontos.ytela[$i] * pontos.xtela[$i+1]));}
  289 + for ($i=0;$i < n;$i+=1){
  290 + $polygon_area += ((x[$i] * y[$i+1])-(y[$i] * x[$i+1]));
  291 + }
289 292 $polygon_area = Math.abs($polygon_area) / 2;
290 293 }
291   - else
292   - {$polygon_area = 0;}
  294 + else{
  295 + $polygon_area = 0;
  296 + }
293 297 return $polygon_area*pixel;
294 298 }
295 299 catch(e){return (0);}
... ...
classesjs/classe_desenho.js
... ... @@ -40,148 +40,149 @@ Voc&amp;ecirc; deve ter recebido uma c&amp;oacute;pia da Licen&amp;ccedil;a P&amp;uacute;blica G
40 40 GNU junto com este programa; se n&atilde;o, escreva para a
41 41 Free Software Foundation, Inc., no endere&ccedil;o
42 42 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
43   -*/
  43 + */
44 44 if(typeof(i3GEO) === 'undefined'){
45 45 var i3GEO = {};
46 46 }
47 47 i3GEO.desenho = {
48   - /*
  48 + /*
49 49 Variavel: richdraw
50 50  
51 51 Objeto richdraw criado por criaContainerRichdraw
52 52  
53 53 Tipo:
54 54 {richdraw object}
55   - */
56   - richdraw: "",
57   - /*
  55 + */
  56 + richdraw: "",
  57 + /*
58 58 Propriedade: estilos
59 59  
60 60 Estilos que podem ser utilizados para desenhar os elementos
61   - */
62   - estilos: {
63   - "normal":{
64   - fillcolor: 'red',
65   - linecolor: 'black',
66   - linewidth: '1',
67   - circcolor: 'white',
68   - textcolor: 'gray'
69   - },
70   - "palido":{
71   - fillcolor: 'gray',
72   - linecolor: 'gray',
73   - linewidth: '1',
74   - circcolor: 'gray',
75   - textcolor: 'gray'
76   - },
77   - "vermelho":{
78   - fillcolor: 'gray',
79   - linecolor: 'red',
80   - linewidth: '1',
81   - circcolor: 'pink',
82   - textcolor: 'brown'
  61 + */
  62 + estilos: {
  63 + "normal":{
  64 + fillcolor: 'red',
  65 + linecolor: 'black',
  66 + linewidth: '1',
  67 + circcolor: 'white',
  68 + textcolor: 'gray'
  69 + },
  70 + "palido":{
  71 + fillcolor: 'gray',
  72 + linecolor: 'gray',
  73 + linewidth: '1',
  74 + circcolor: 'gray',
  75 + textcolor: 'gray'
  76 + },
  77 + "vermelho":{
  78 + fillcolor: 'gray',
  79 + linecolor: 'red',
  80 + linewidth: '1',
  81 + circcolor: 'pink',
  82 + textcolor: 'brown'
  83 + },
  84 + "verde":{
  85 + fillcolor: 'gray',
  86 + linecolor: 'green',
  87 + linewidth: '1',
  88 + circcolor: 'DarkGreen',
  89 + textcolor: 'GreenYellow'
  90 + }
83 91 },
84   - "verde":{
85   - fillcolor: 'gray',
86   - linecolor: 'green',
87   - linewidth: '1',
88   - circcolor: 'DarkGreen',
89   - textcolor: 'GreenYellow'
90   - }
91   - },
92   - /*
  92 + /*
93 93 Propriedade: estiloPadrao
94 94  
95 95 Estilo utilizado como padr&atilde;o
96   - */
97   - estiloPadrao: "normal",
98   - /*
99   - Fun&ccedil;&otilde;es utilizadas quando o mapa baseia-se na interface OpenLayers
100   - */
101   - openlayers: {
  96 + */
  97 + estiloPadrao: "normal",
102 98 /*
103   - * Cria o layer onde os desenhos serao inseridos
  99 + Fun&ccedil;&otilde;es utilizadas quando o mapa baseia-se na interface OpenLayers
104 100 */
105   - inicia: function(){
106   - if(!i3GEO.desenho.layergrafico || i3GEO.desenho.layergrafico != undefined){
107   - i3GEO.desenho.openlayers.criaLayerGrafico();
108   - }
109   - },
110   - //i3GEO.editorOL.layergrafico
111   - criaLayerGrafico: function(){
112   - var sketchSymbolizers = {
113   - "Point": {
114   - fillColor: "rgb(${fillColor})",
115   - fillOpacity: "${opacidade}",
116   - strokeWidth: "${strokeWidth}",
117   - strokeOpacity: "${opacidade}",
118   - strokeColor: "rgb(${strokeColor})",
119   - label: "${texto}",
120   - pointRadius: "${pointRadius}",
121   - graphicName: "${graphicName}",
122   - fontSize: "${fontSize}",
123   - fontColor: "rgb(${fontColor})",
124   - fontFamily: "Arial",
125   - fontWeight: "normal",
126   - labelAlign: "lb",
127   - labelXOffset: "3",
128   - labelYOffset: "3",
129   - externalGraphic: "${externalGraphic}"
130   - },
131   - "Line": {
132   - strokeWidth: "${strokeWidth}",
133   - strokeOpacity: "${opacidade}",
134   - strokeColor: "rgb(${strokeColor})"
135   - },
136   - "Polygon": {
137   - strokeWidth: "${strokeWidth}",
138   - strokeOpacity: "${opacidade}",
139   - strokeColor: "rgb(${strokeColor})",
140   - fillColor: "rgb(${fillColor})",
141   - fillOpacity: "${opacidade}",
142   - zIndex: 5000
143   - }
  101 + openlayers: {
  102 + /*
  103 + * Cria o layer onde os desenhos serao inseridos
  104 + */
  105 + inicia: function(){
  106 + if(!i3GEO.desenho.layergrafico || i3GEO.desenho.layergrafico != undefined){
  107 + i3GEO.desenho.openlayers.criaLayerGrafico();
  108 + }
  109 + },
  110 + //i3GEO.editorOL.layergrafico
  111 + criaLayerGrafico: function(){
  112 + var sketchSymbolizers = {
  113 + "Point": {
  114 + fillColor: "rgb(${fillColor})",
  115 + fillOpacity: "${opacidade}",
  116 + strokeWidth: "${strokeWidth}",
  117 + strokeOpacity: "${opacidade}",
  118 + strokeColor: "rgb(${strokeColor})",
  119 + label: "${texto}",
  120 + pointRadius: "${pointRadius}",
  121 + graphicName: "${graphicName}",
  122 + fontSize: "${fontSize}",
  123 + fontColor: "rgb(${fontColor})",
  124 + fontFamily: "Arial",
  125 + fontWeight: "normal",
  126 + labelAlign: "lb",
  127 + labelXOffset: "3",
  128 + labelYOffset: "3",
  129 + externalGraphic: "${externalGraphic}"
  130 + },
  131 + "Line": {
  132 + strokeWidth: "${strokeWidth}",
  133 + strokeOpacity: "${opacidade}",
  134 + strokeColor: "rgb(${strokeColor})"
  135 + },
  136 + "Polygon": {
  137 + strokeWidth: "${strokeWidth}",
  138 + strokeOpacity: "${opacidade}",
  139 + strokeColor: "rgb(${strokeColor})",
  140 + fillColor: "rgb(${fillColor})",
  141 + fillOpacity: "${opacidade}",
  142 + zIndex: 5000
  143 + }
144 144 },
145 145 style = new OpenLayers.Style(),
146 146 styleMap1 = new OpenLayers.StyleMap(
147   - {
148   - "default": style,
149   - "vertex": {
150   - strokeOpacity: 1,
151   - strokeWidth: 1,
152   - fillColor: "white",
153   - fillOpacity: 0.45,
154   - pointRadius: 4
155   - }
156   - },
157   - {
158   - extendDefault: false
159   - }
  147 + {
  148 + "default": style,
  149 + "vertex": {
  150 + strokeOpacity: 1,
  151 + strokeWidth: 1,
  152 + fillColor: "white",
  153 + fillOpacity: 0.45,
  154 + pointRadius: 4
  155 + }
  156 + },
  157 + {
  158 + extendDefault: false
  159 + }
160 160 ),
161 161 renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
162   -
163   - style.addRules([
164   - new OpenLayers.Rule({symbolizer: sketchSymbolizers})
165   - ]);
166   - renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
167   - i3GEO.desenho.layergrafico = new OpenLayers.Layer.Vector("Edi&ccedil;&atilde;o",{
168   - styleMap: styleMap1,
169   - displayInLayerSwitcher:true,
170   - visibility:true,
171   - renderers: renderer,
172   - vertexRenderIntent: "vertex"
  162 +
  163 + style.addRules(
  164 + [new OpenLayers.Rule({symbolizer: sketchSymbolizers})]
  165 + );
  166 + renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
  167 + i3GEO.desenho.layergrafico = new OpenLayers.Layer.Vector(
  168 + "Edi&ccedil;&atilde;o",{
  169 + styleMap: styleMap1,
  170 + displayInLayerSwitcher:true,
  171 + visibility:true,
  172 + renderers: renderer,
  173 + vertexRenderIntent: "vertex"
  174 + }
  175 + );
  176 + //para efeitos de compatibilidade
  177 + if(i3GEO.editorOL.mapa){
  178 + i3GEO.editorOL.mapa.addLayers([i3GEO.desenho.layergrafico]);
  179 + }
  180 + else{
  181 + i3geoOL.addLayers([i3GEO.desenho.layergrafico]);
173 182 }
174   - );
175   - //para efeitos de compatibilidade
176   - if(i3GEO.editorOL.mapa){
177   - i3GEO.editorOL.mapa.addLayers([i3GEO.desenho.layergrafico]);
178   - }
179   - else{
180   - i3geoOL.addLayers([i3GEO.desenho.layergrafico]);
181 183 }
182   - }
183   - },
184   - /*
  184 + },
  185 + /*
185 186 Cria os elementos 'dom' necess&aacute;rios ao uso das fun&ccedil;&otilde;es de desenho sobre o mapa.
186 187  
187 188 As ferramentas de c&aacute;lculo de dist&acirc;ncias e &aacute;reas utilizam esse container.
... ... @@ -195,64 +196,64 @@ i3GEO.desenho = {
195 196 Essa fun&ccedil;&atilde;o cria tamb&eacute;m o objeto pontosdistobj que &eacute; utilizado para armazenar
196 197 os dados obtidos da movimenta&ccedil;&atilde;o do mouse sobre o mapa
197 198  
198   - */
199   - criaContainerRichdraw: function(){
200   - if(typeof(console) !== 'undefined'){console.info("i3GEO.desenho.criaContainerRichdraw()");}
201   - pontosdistobj = {
202   - xpt: [],
203   - ypt: [],
204   - dist: [],
205   - distV: [],
206   - xtela: [],
207   - ytela: [],
208   - ximg: [],
209   - yimg: [],
210   - linhas: []
211   - };
212   - if(i3GEO.Interface.ATUAL === "googleearth")
213   - {return;}
214   - try{
215   - var divgeo,renderer;
216   - divgeo = i3GEO.desenho.criaDivContainer();
217   - divgeo.innerHTML = "";
218   - //
219   - //cria o objeto renderer conforme o browser em uso
220   - //esse objeto ser&aacute; utilizado nas fun&ccedil;&otilde;es de desenho
221   - //mais detalhes, veja em pacotes/richdraw
222   - //Conforme a resposta do navegador, utiliza-se a cria&ccedil;&atilde;o VML ou SVG
223   - //
  199 + */
  200 + criaContainerRichdraw: function(){
  201 + if(typeof(console) !== 'undefined'){console.info("i3GEO.desenho.criaContainerRichdraw()");}
  202 + i3GEO.analise.pontosdistobj = {
  203 + xpt: [],
  204 + ypt: [],
  205 + dist: [],
  206 + distV: [],
  207 + xtela: [],
  208 + ytela: [],
  209 + ximg: [],
  210 + yimg: [],
  211 + linhas: []
  212 + };
  213 + if(i3GEO.Interface.ATUAL === "googleearth")
  214 + {return;}
224 215 try{
225   - renderer = new VMLRenderer();
226   - i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
227   - }
228   - catch(erro){
229   - renderer = new SVGRenderer();
230   - i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
231   - renderer.svgRoot.style.width = divgeo.style.width;
232   - renderer.svgRoot.style.height = divgeo.style.height;
233   - }
234   - //
235   - //defini&ccedil;&atilde;o dos s&iacute;mbolos default para os elementos gr&aacute;ficos
236   - //
237   - i3GEO.desenho.definePadrao(i3GEO.desenho.estiloPadrao);
238   - i3GEO.desenho.richdraw.editCommand('mode', 'line');
239   - divgeo.style.display="block";
240   - //
241   - //ap&oacute;s o container ser criado, &eacute; necess&aacute;rio que as fun&ccedil;&otilde;es
242   - //de clique sobre o mapa sejam ativadas
243   - //para funcionarem sobre o container
244   - //
245   - i3GEO.eventos.ativa(divgeo);
246   - if($i("localizarxygeoProjxg")){
247   - var temp = function(){
248   - i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,"localizarxygeoProj");
249   - };
250   - YAHOO.util.Event.addListener(divgeo,"mousemove", temp);
  216 + var divgeo,renderer;
  217 + divgeo = i3GEO.desenho.criaDivContainer();
  218 + divgeo.innerHTML = "";
  219 + //
  220 + //cria o objeto renderer conforme o browser em uso
  221 + //esse objeto ser&aacute; utilizado nas fun&ccedil;&otilde;es de desenho
  222 + //mais detalhes, veja em pacotes/richdraw
  223 + //Conforme a resposta do navegador, utiliza-se a cria&ccedil;&atilde;o VML ou SVG
  224 + //
  225 + try{
  226 + renderer = new VMLRenderer();
  227 + i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
  228 + }
  229 + catch(erro){
  230 + renderer = new SVGRenderer();
  231 + i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
  232 + renderer.svgRoot.style.width = divgeo.style.width;
  233 + renderer.svgRoot.style.height = divgeo.style.height;
  234 + }
  235 + //
  236 + //defini&ccedil;&atilde;o dos s&iacute;mbolos default para os elementos gr&aacute;ficos
  237 + //
  238 + i3GEO.desenho.definePadrao(i3GEO.desenho.estiloPadrao);
  239 + i3GEO.desenho.richdraw.editCommand('mode', 'line');
  240 + divgeo.style.display="block";
  241 + //
  242 + //ap&oacute;s o container ser criado, &eacute; necess&aacute;rio que as fun&ccedil;&otilde;es
  243 + //de clique sobre o mapa sejam ativadas
  244 + //para funcionarem sobre o container
  245 + //
  246 + i3GEO.eventos.ativa(divgeo);
  247 + if($i("localizarxygeoProjxg")){
  248 + var temp = function(){
  249 + i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,"localizarxygeoProj");
  250 + };
  251 + YAHOO.util.Event.addListener(divgeo,"mousemove", temp);
  252 + }
251 253 }
252   - }
253   - catch(men){alert("Erro ao tentar criar container richdraw "+men);}
254   - },
255   - /*
  254 + catch(men){alert("Erro ao tentar criar container richdraw "+men);}
  255 + },
  256 + /*
256 257 Cria o elemento DIV que ser&aacute; utilizado para renderizar os elementos gr&aacute;ficos.
257 258 Nesse DIV ser&atilde;o inclu&iacute;dos os elementos de desenho em SVG ou VML
258 259  
... ... @@ -261,39 +262,39 @@ i3GEO.desenho = {
261 262 Return:
262 263  
263 264 DOM object
264   - */
265   - criaDivContainer: function(){
266   - desenhoUltimaLinha = "";
267   - desenhoUltimaLinhaPol = "";
268   - if (!$i("divGeometriasTemp")){
269   - var pos,novoel,ne;
270   - //
271   - //pega a posi&ccedil;&atilde;o da imagem do mapa para posicionar corretamente o container
272   - //
273   - pos = [0,0];
274   - pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
275   - //
276   - //cria o container
277   - //
278   - novoel = document.createElement("div");
279   - novoel.id = "divGeometriasTemp";
280   - ne = novoel.style;
281   - ne.cursor="crosshair";
282   - ne.zIndex=0;
283   - if(i3GEO.Interface.TABLET === true)
284   - {ne.zIndex=5000;}
285   - ne.position="absolute";
286   - ne.width=i3GEO.parametros.w + "px";
287   - ne.height=i3GEO.parametros.h + "px";
288   - ne.border="0px solid black";
289   - ne.display="none";
290   - ne.top=pos[1] + "px";
291   - ne.left=pos[0] + "px";
292   - document.body.appendChild(novoel);
293   - }
294   - return ($i("divGeometriasTemp"));
295   - },
296   - /*
  265 + */
  266 + criaDivContainer: function(){
  267 + desenhoUltimaLinha = "";
  268 + desenhoUltimaLinhaPol = "";
  269 + if (!$i("divGeometriasTemp")){
  270 + var pos,novoel,ne;
  271 + //
  272 + //pega a posi&ccedil;&atilde;o da imagem do mapa para posicionar corretamente o container
  273 + //
  274 + pos = [0,0];
  275 + pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
  276 + //
  277 + //cria o container
  278 + //
  279 + novoel = document.createElement("div");
  280 + novoel.id = "divGeometriasTemp";
  281 + ne = novoel.style;
  282 + ne.cursor="crosshair";
  283 + ne.zIndex=0;
  284 + if(i3GEO.Interface.TABLET === true)
  285 + {ne.zIndex=5000;}
  286 + ne.position="absolute";
  287 + ne.width=i3GEO.parametros.w + "px";
  288 + ne.height=i3GEO.parametros.h + "px";
  289 + ne.border="0px solid black";
  290 + ne.display="none";
  291 + ne.top=pos[1] + "px";
  292 + ne.left=pos[0] + "px";
  293 + document.body.appendChild(novoel);
  294 + }
  295 + return ($i("divGeometriasTemp"));
  296 + },
  297 + /*
297 298 Desenha ou reposiciona elementos na tela usando a biblioteca richdraw
298 299  
299 300 Parametros:
... ... @@ -305,45 +306,46 @@ i3GEO.desenho = {
305 306 n {numeric} - &iacute;ndice do elemento no array pontosdistobj
306 307  
307 308 texto {string} - texto que ser&aacute; inserido no tipo "insereTexto"
308   - */
309   - aplica: function(tipo,objeto,n,texto){
310   - var dy,dx,w,c;
311   - if(i3GEO.desenho.richdraw && $i(i3GEO.Interface.IDCORPO)){
312   - //pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
313   - //
314   - //faz o reposicionamento de linhas quando o mouse &eacute; movido e a linha est&aacute; ativa
315   - //
316   - if((tipo==="resizeLinha") || (tipo==="resizePoligono")){
317   - try
318   - {i3GEO.desenho.richdraw.renderer.resize(objeto,0,0,objposicaocursor.imgx,objposicaocursor.imgy);}
319   - catch(erro){
320   - if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+erro);}
321   - }
322   - }
323   - if(tipo==="insereCirculo"){
324   - dx = Math.pow(((pontosdistobj.xtela[n])*1) - ((pontosdistobj.xtela[n-1])*1),2);
325   - dy = Math.pow(((pontosdistobj.ytela[n])*1) - ((pontosdistobj.ytela[n-1])*1),2);
326   - w = Math.sqrt(dx + dy);
327   - c = "";
328   - if(navn){
329   - c = 'rgba(255,255,255,0';
  309 + */
  310 + aplica: function(tipo,objeto,n,texto){
  311 + var dy,dx,w,c,
  312 + pontosdistobj = i3GEO.analise.pontosdistobj;
  313 + if(i3GEO.desenho.richdraw && $i(i3GEO.Interface.IDCORPO)){
  314 + //pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
  315 + //
  316 + //faz o reposicionamento de linhas quando o mouse &eacute; movido e a linha est&aacute; ativa
  317 + //
  318 + if((tipo==="resizeLinha") || (tipo==="resizePoligono")){
  319 + try
  320 + {i3GEO.desenho.richdraw.renderer.resize(objeto,0,0,objposicaocursor.imgx,objposicaocursor.imgy);}
  321 + catch(erro){
  322 + if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+erro);}
  323 + }
330 324 }
331   - if(chro){
  325 + if(tipo==="insereCirculo"){
  326 + dx = Math.pow(((pontosdistobj.xtela[n])*1) - ((pontosdistobj.xtela[n-1])*1),2);
  327 + dy = Math.pow(((pontosdistobj.ytela[n])*1) - ((pontosdistobj.ytela[n-1])*1),2);
  328 + w = Math.sqrt(dx + dy);
332 329 c = "";
  330 + if(navn){
  331 + c = 'rgba(255,255,255,0';
  332 + }
  333 + if(chro){
  334 + c = "";
  335 + }
  336 + i3GEO.desenho.insereCirculo(pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],w,c);
333 337 }
334   - i3GEO.desenho.insereCirculo(pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],w,c);
335   - }
336   - if(tipo==="insereTexto"){
337   - try{
338   - i3GEO.desenho.richdraw.renderer.create('text', '', i3GEO.desenho.richdraw.textColor, 1, pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],"","",texto);
339   - }
340   - catch(men){
341   - if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+men);}
  338 + if(tipo==="insereTexto"){
  339 + try{
  340 + i3GEO.desenho.richdraw.renderer.create('text', '', i3GEO.desenho.richdraw.textColor, 1, pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],"","",texto);
  341 + }
  342 + catch(men){
  343 + if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+men);}
  344 + }
342 345 }
343 346 }
344   - }
345   - },
346   - /*
  347 + },
  348 + /*
347 349 Insere um circulo no container de elementos gr&aacute;ficos
348 350  
349 351 Parametros:
... ... @@ -353,53 +355,53 @@ i3GEO.desenho = {
353 355 y {numerico} - posi&ccedil;&atilde;o do ponto em coordenadas de imagem
354 356  
355 357 w {numerico} - raio do c&iacute;rculo em pixels
356   -
  358 +
357 359 b {string} - cor do fundo
358   - */
359   - insereCirculo: function(x,y,w,b){
360   - if(!b){
361   - b = "";
362   - }
363   - try{
364   - i3GEO.desenho.richdraw.renderer.create('circ', b, i3GEO.desenho.richdraw.circColor, i3GEO.desenho.richdraw.lineWidth, x,y,w,w);
365   - }
366   - catch(men){
367   - if(typeof(console) !== 'undefined'){console.error(men);}
368   - }
369   - },
370   - /*
  360 + */
  361 + insereCirculo: function(x,y,w,b){
  362 + if(!b){
  363 + b = "";
  364 + }
  365 + try{
  366 + i3GEO.desenho.richdraw.renderer.create('circ', b, i3GEO.desenho.richdraw.circColor, i3GEO.desenho.richdraw.lineWidth, x,y,w,w);
  367 + }
  368 + catch(men){
  369 + if(typeof(console) !== 'undefined'){console.error(men);}
  370 + }
  371 + },
  372 + /*
371 373 Aplica um determinado padrao de estilos para os novos elementos que ser&atilde;o adicionados
372 374  
373 375 Parametro:
374 376  
375 377 padrao {string} - nome do estilo
376   - */
377   - definePadrao: function(padrao){
378   - padrao = i3GEO.desenho.estilos[padrao];
379   - i3GEO.desenho.richdraw.editCommand('fillcolor', padrao.fillcolor);
380   - i3GEO.desenho.richdraw.editCommand('linecolor', padrao.linecolor);
381   - i3GEO.desenho.richdraw.editCommand('linewidth', padrao.linewidth);
382   - i3GEO.desenho.richdraw.editCommand('circcolor', padrao.circcolor);
383   - i3GEO.desenho.richdraw.editCommand('textcolor', padrao.textcolor);
384   - },
385   - /*
  378 + */
  379 + definePadrao: function(padrao){
  380 + padrao = i3GEO.desenho.estilos[padrao];
  381 + i3GEO.desenho.richdraw.editCommand('fillcolor', padrao.fillcolor);
  382 + i3GEO.desenho.richdraw.editCommand('linecolor', padrao.linecolor);
  383 + i3GEO.desenho.richdraw.editCommand('linewidth', padrao.linewidth);
  384 + i3GEO.desenho.richdraw.editCommand('circcolor', padrao.circcolor);
  385 + i3GEO.desenho.richdraw.editCommand('textcolor', padrao.textcolor);
  386 + },
  387 + /*
386 388 Cria uma caixa de sele&ccedil;&atilde;o para escolha do estilo a ser utilizado
387   - */
388   - caixaEstilos: function(){
389   - var lista = i3GEO.util.listaChaves(i3GEO.desenho.estilos),
  389 + */
  390 + caixaEstilos: function(){
  391 + var lista = i3GEO.util.listaChaves(i3GEO.desenho.estilos),
390 392 n = lista.length,
391 393 i,
392 394 caixa,
393 395 sel;
394   - caixa = "<select onchange='i3GEO.desenho.definePadrao(this.value)'>";
395   - for(i=0;i<n;i+=1){
396   - sel = "";
397   - if(lista[i] === i3GEO.desenho.estiloPadrao)
398   - {sel = "select";}
399   - caixa += "<option value='"+lista[i]+"'" + sel + ">"+lista[i]+"</option>";
  396 + caixa = "<select onchange='i3GEO.desenho.definePadrao(this.value)'>";
  397 + for(i=0;i<n;i+=1){
  398 + sel = "";
  399 + if(lista[i] === i3GEO.desenho.estiloPadrao)
  400 + {sel = "select";}
  401 + caixa += "<option value='"+lista[i]+"'" + sel + ">"+lista[i]+"</option>";
  402 + }
  403 + caixa += "</select>";
  404 + return caixa;
400 405 }
401   - caixa += "</select>";
402   - return caixa;
403   - }
404 406 };
405   -//YAHOO.log("carregou classe desenho", "Classes i3geo");
406 407 \ No newline at end of file
  408 +//YAHOO.log("carregou classe desenho", "Classes i3geo");
... ...