Commit 4a0b4de086694d997a5bf3a4fbfca90e8c78f3c1

Authored by Edmar Moretti
1 parent aa8f19d3

-

classesjs/classe_analise.js
... ... @@ -243,19 +243,6 @@ i3GEO.analise = {
243 243 inicia: function(){
244 244 if(typeof(console) !== 'undefined'){console.info("i3GEO.analise.medeDistancia.inicia()");}
245 245 i3GEO.eventos.cliquePerm.desativa();
246   - //@TODO remover apos concluir a refatoracao do codigo
247   - i3GEO.analise.pontosdistobj = {
248   - xpt: [],
249   - ypt: [],
250   - dist: [],
251   - distV: [],
252   - xtela: [],
253   - ytela: [],
254   - ximg: [],
255   - yimg: [],
256   - linhas: [],
257   - linhastemp: []
258   - };
259 246 i3GEO.analise.medeDistancia.criaJanela();
260 247 i3GEO.analise.medeDistancia[i3GEO.Interface["ATUAL"]].inicia();
261 248 },
... ... @@ -730,27 +717,133 @@ i3GEO.analise = {
730 717 }
731 718 },
732 719 googleearth:{
  720 + pontosdistobj: {
  721 + xpt: [],
  722 + ypt: [],
  723 + dist: [],
  724 + distV: [],
  725 + xtela: [],
  726 + ytela: [],
  727 + ximg: [],
  728 + yimg: [],
  729 + linhas: [],
  730 + linhastemp: []
  731 + },
733 732 inicia: function(){
734   - if (g_tipoacao !== "mede"){
735   - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)
736   - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}
737   - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)
738   - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}
739   - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
740   - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
741   - $i("mostradistancia").style.display="block";
742   - g_tipoacao = "mede";
  733 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.googleearth.clique()") < 0)
  734 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.googleearth.clique()");}
  735 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.googleearth.movimento()") < 0)
  736 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.googleearth.movimento()");}
  737 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)
  738 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}
  739 + },
  740 + clique: function(){
  741 + var pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj,
  742 + n,d,decimal,dd;
  743 + n = pontosdistobj.xpt.length;
  744 + pontosdistobj.xpt[n] = objposicaocursor.ddx;
  745 + pontosdistobj.ypt[n] = objposicaocursor.ddy;
  746 + pontosdistobj.xtela[n] = objposicaocursor.telax;
  747 + pontosdistobj.ytela[n] = objposicaocursor.telay;
  748 + pontosdistobj.ximg[n] = objposicaocursor.imgx;
  749 + pontosdistobj.yimg[n] = objposicaocursor.imgy;
  750 + pontosdistobj.dist[n] = 0;
  751 + if (n > 0){
  752 + d = i3GEO.calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  753 + decimal = 0;
  754 + d = d + "";
  755 + d = d.split(".");
  756 + decimal = d[1].substr(0,5);
  757 + d = d[0]+"."+decimal;
  758 + d = d * 1;
  759 + pontosdistobj.dist[n] = d + pontosdistobj.dist[n-1];
  760 + if($i("pararraios") && $i("pararraios").checked === true ){
  761 + dd = Math.sqrt(((Math.pow((pontosdistobj.xpt[n] - pontosdistobj.xpt[n-1]),2)) + (Math.pow((pontosdistobj.ypt[n] - pontosdistobj.ypt[n-1]),2)) ));
  762 + i3GEO.desenho.googleearth.insereCirculo(pontosdistobj.xpt[n],pontosdistobj.ypt[n],dd,"","divGeometriasTemp");
  763 + }
  764 + if($i("parartextos") && $i("parartextos").checked === true ){
  765 + i3GEO.desenho.googleearth.insereMarca(d+" km",objposicaocursor.ddx,objposicaocursor.ddy,"","divGeometriasTemp");
  766 + }
  767 + //cria a linha ligando os dois ultimos pontos
  768 + i3GEO.desenho.googleearth.insereLinha(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],pontosdistobj.xpt[n],pontosdistobj.ypt[n],"","divGeometriasTemp");
743 769 }
744   - else{
745   - var Dom = YAHOO.util.Dom;
746   - Dom.setStyle("mostradistancia","display","none");
747   - Dom.setStyle("pontosins","display","none");
  770 + },
  771 + movimento: function(){
  772 + var n,d,r,decimal,da,
  773 + pontosdistobj = i3GEO.analise.medeDistancia.googleearth.pontosdistobj,
  774 + calculo = i3GEO.calculo;
  775 + n = pontosdistobj.xpt.length;
  776 + if (n > 0){
  777 + d = calculo.distancia(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  778 + r = calculo.direcao(pontosdistobj.xpt[n-1],pontosdistobj.ypt[n-1],objposicaocursor.ddx,objposicaocursor.ddy);
  779 + r = calculo.dd2dms(r,r);
  780 + r = r[0];
  781 +
  782 + d = d + "";
  783 + d = d.split(".");
  784 + decimal = d[1].substr(0,5);
  785 + d = d[0]+"."+decimal;
  786 + d = d * 1;
  787 + da = d + pontosdistobj.dist[n-1];
  788 + da = da + "";
  789 + da = da.split(".");
  790 + decimal = da[1].substr(0,5);
  791 + da = da[0]+"."+decimal;
  792 + da = da * 1;
  793 + i3GEO.analise.medeDistancia.googleearth.mostraParcial(d,da,r);
748 794 }
749 795 },
  796 + /**
  797 + * Fecha a janela que mostra os dados
  798 + * Pergunta ao usuario se os graficos devem ser removidos
  799 + * Os graficos sao marcados com o atributo "origem"
  800 + * Os raios e pontos sao sempre removidos
  801 + */
750 802 fechaJanela: function(){
751   -
  803 + i3GeoMap.setOptions({disableDoubleClickZoom:false});
  804 + i3GeoMap.setOptions({draggableCursor:undefined});
  805 + var f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem","medeDistancia");
  806 + if(f && f.length > 0){
  807 + temp = window.confirm($trad("x94"));
  808 + if(temp){
  809 + i3GEO.desenho.googlemaps.destroyFeatures(f);
  810 + }
  811 + }
  812 + f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem","medeDistanciaExcluir");
  813 + if(f && f.length > 0){
  814 + i3GEO.desenho.googlemaps.destroyFeatures(f);
  815 + }
  816 + i3GEO.eventos.MOUSECLIQUE.remove("i3GEO.analise.medeDistancia.googleearth.clique()");
  817 + i3GEO.eventos.MOUSEMOVE.remove("i3GEO.analise.medeDistancia.movimento.googleearth()");
  818 + i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.analise.medeDistancia.fechaJanela()");
  819 + },
  820 + /**
  821 + * Mostra a totalizacao das linhas ja digitalizadas
  822 + */
  823 + mostraTotal: function(trecho,total){
  824 + var mostra = $i("mostradistancia_calculo"),
  825 + texto;
  826 + if (mostra){
  827 + texto = "<b>"+$trad("x96")+":</b> "+total.toFixed(3)+" km"+
  828 + "<br><b>"+$trad("x96")+":</b> "+(total*1000).toFixed(2)+" m"+
  829 + "<br>"+$trad("x25")+": "+i3GEO.calculo.metododistancia;
  830 + mostra.innerHTML = texto;
  831 + }
  832 + },
  833 + /**
  834 + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
  835 + */
  836 + mostraParcial: function(trecho,parcial,direcao){
  837 + var mostra = $i("mostradistancia_calculo_movel"),
  838 + texto;
  839 + if (mostra){
  840 + texto = "<b>"+$trad("x95")+":</b> "+trecho.toFixed(3)+" km"+
  841 + "<br><b>"+$trad("x97")+":</b> "+(parcial + trecho).toFixed(3)+" km" +
  842 + "<br><b>"+$trad("x23")+" (DMS):</b> "+direcao.toFixed(4);
  843 + mostra.innerHTML = texto;
  844 + }
752 845 }
753   - },
  846 + }
754 847 },
755 848 /*
756 849 i3GEO.analise.medeArea
... ...
classesjs/classe_configura.js
... ... @@ -1083,8 +1083,6 @@ i3GEO.configura = {
1083 1083 $i(i3GEO.Interface.IDMAPA).title = "";
1084 1084 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"distancia",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
1085 1085 }
1086   - g_tipoacao = "";
1087   - g_operacao="";
1088 1086 i3GEO.analise.medeDistancia.inicia();
1089 1087 }
1090 1088 },
... ... @@ -1100,8 +1098,6 @@ i3GEO.configura = {
1100 1098 $i(i3GEO.Interface.IDMAPA).title = "";
1101 1099 i3GEO.util.mudaCursor(i3GEO.configura.cursores,"area",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
1102 1100 }
1103   - g_tipoacao = "";
1104   - g_operacao="";
1105 1101 i3GEO.analise.medeArea.inicia();
1106 1102 }
1107 1103 },
... ... @@ -1192,7 +1188,6 @@ i3GEO.configura = {
1192 1188 };
1193 1189 GEvent.addListener(directions, "error", temp);
1194 1190 directions.load("from: "+pontoRota1.lat()+","+pontoRota1.lng()+" to: "+pontoRota2.lat()+","+pontoRota2.lng());
1195   - //i3GeoMap.removeOverlay(directions)
1196 1191 }
1197 1192 };
1198 1193 rotaEvento = GEvent.addListener(i3GeoMap, "click", parametrosRota);
... ...
classesjs/classe_desenho.js
1 1 /*
2   -Title: Desenho de elementos gr&aacute;ficos
  2 +Desenho de elementos gr&aacute;ficos
3 3  
4 4 i3GEO.desenho
5 5  
6   -Controla as opera&ccedil;&otilde;es de desenho sobre o mapa
  6 +Funcoes de uso geral para desenho de elementos graficos.
7 7  
8   -Por desenho, entende-se elementos que s&atilde;o inclu&iacute;dos graficamente no mapa,
9   -como por exemplo, linhas, pontos, c&iacute;rculos, etc e que n&atilde;o comp&otilde;em layers
10   -com dados
  8 +As funcoes dependem de cada interface em uso no mapa.
11 9  
12   -As opera&ccedil;&otilde;es de desenho s&atilde;o baseadas na biblioteca Richdraw (i3geo/pacotes/richdraw)
13   -
14   -Link:
15   -
16   -http://starkravingfinkle.org/blog/2006/04/richdraw-simple-vmlsvg-editor/
  10 +Aqui estao apenas as funcoes de uso compartilhado. Para mais informacoes veja as opcoes nos editores vetoriais.
17 11  
18 12 Arquivo:
19 13  
... ... @@ -45,15 +39,6 @@ if(typeof(i3GEO) === &#39;undefined&#39;){
45 39 var i3GEO = {};
46 40 }
47 41 i3GEO.desenho = {
48   - /*
49   - Variavel: richdraw
50   -
51   - Objeto richdraw criado por criaContainerRichdraw
52   -
53   - Tipo:
54   - {richdraw object}
55   - */
56   - richdraw: "",
57 42 layergrafico: null,
58 43 /*
59 44 Propriedade: estilos
... ... @@ -241,212 +226,88 @@ i3GEO.desenho = {
241 226 }
242 227 }
243 228 },
244   - /*
245   - Cria os elementos 'dom' necess&aacute;rios ao uso das fun&ccedil;&otilde;es de desenho sobre o mapa.
246   -
247   - As ferramentas de c&aacute;lculo de dist&acirc;ncias e &aacute;reas utilizam esse container.
248   -
249   - Richdraw &eacute; uma biblioteca utilizada pelo i3geo para abstrair as diferen&ccedil;as entre as linguagens svg e vml.
250   -
251   - Essa abstra&ccedil;&atilde;o &eacute; necess&aacute;ria devido &agrave;s diferen&ccedil;as entre os navegadores.
252   -
253   - O container &eacute; criado dentro de um DIV chamado "divGeometriasTemp"
254   -
255   - Essa fun&ccedil;&atilde;o cria tamb&eacute;m o objeto pontosdistobj que &eacute; utilizado para armazenar
256   - os dados obtidos da movimenta&ccedil;&atilde;o do mouse sobre o mapa
257   -
258   - */
259   - criaContainerRichdraw: function(){
260   - if(typeof(console) !== 'undefined'){console.info("i3GEO.desenho.criaContainerRichdraw()");}
261   - i3GEO.analise.pontosdistobj = {
262   - xpt: [],
263   - ypt: [],
264   - dist: [],
265   - distV: [],
266   - xtela: [],
267   - ytela: [],
268   - ximg: [],
269   - yimg: [],
270   - linhas: []
271   - };
272   - if(i3GEO.Interface.ATUAL === "googleearth")
273   - {return;}
274   - try{
275   - var divgeo,renderer;
276   - divgeo = i3GEO.desenho.criaDivContainer();
277   - divgeo.innerHTML = "";
278   - //
279   - //cria o objeto renderer conforme o browser em uso
280   - //esse objeto ser&aacute; utilizado nas fun&ccedil;&otilde;es de desenho
281   - //mais detalhes, veja em pacotes/richdraw
282   - //Conforme a resposta do navegador, utiliza-se a cria&ccedil;&atilde;o VML ou SVG
283   - //
284   - try{
285   - renderer = new VMLRenderer();
286   - i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
287   - }
288   - catch(erro){
289   - renderer = new SVGRenderer();
290   - i3GEO.desenho.richdraw = new RichDrawEditor(divgeo, renderer);
291   - renderer.svgRoot.style.width = divgeo.style.width;
292   - renderer.svgRoot.style.height = divgeo.style.height;
293   - }
294   - //
295   - //defini&ccedil;&atilde;o dos s&iacute;mbolos default para os elementos gr&aacute;ficos
296   - //
297   - i3GEO.desenho.definePadrao(i3GEO.desenho.estiloPadrao);
298   - i3GEO.desenho.richdraw.editCommand('mode', 'line');
299   - divgeo.style.display="block";
300   - //
301   - //ap&oacute;s o container ser criado, &eacute; necess&aacute;rio que as fun&ccedil;&otilde;es
302   - //de clique sobre o mapa sejam ativadas
303   - //para funcionarem sobre o container
304   - //
305   - i3GEO.eventos.ativa(divgeo);
306   - if($i("localizarxygeoProjxg")){
307   - var temp = function(){
308   - i3GEO.coordenadas.atualizaGeo(objposicaocursor.dmsx,objposicaocursor.dmsy,"localizarxygeoProj");
309   - };
310   - YAHOO.util.Event.addListener(divgeo,"mousemove", temp);
311   - }
312   - }
313   - catch(men){alert("Erro ao tentar criar container richdraw "+men);}
314   - },
315   - /*
316   - Cria o elemento DIV que ser&aacute; utilizado para renderizar os elementos gr&aacute;ficos.
317   - Nesse DIV ser&atilde;o inclu&iacute;dos os elementos de desenho em SVG ou VML
318   -
319   - O DIV recebe como ID "divGeometriasTemp"
320   -
321   - Return:
322   -
323   - DOM object
324   - */
325   - criaDivContainer: function(){
326   - desenhoUltimaLinha = "";
327   - desenhoUltimaLinhaPol = "";
328   - if (!$i("divGeometriasTemp")){
329   - var pos,novoel,ne;
330   - //
331   - //pega a posi&ccedil;&atilde;o da imagem do mapa para posicionar corretamente o container
332   - //
333   - pos = [0,0];
334   - pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
335   - //
336   - //cria o container
337   - //
338   - novoel = document.createElement("div");
339   - novoel.id = "divGeometriasTemp";
340   - ne = novoel.style;
341   - ne.cursor="crosshair";
342   - ne.zIndex=0;
343   - if(i3GEO.Interface.TABLET === true)
344   - {ne.zIndex=5000;}
345   - ne.position="absolute";
346   - ne.width=i3GEO.parametros.w + "px";
347   - ne.height=i3GEO.parametros.h + "px";
348   - ne.border="0px solid black";
349   - ne.display="none";
350   - ne.top=pos[1] + "px";
351   - ne.left=pos[0] + "px";
352   - document.body.appendChild(novoel);
353   - }
354   - return ($i("divGeometriasTemp"));
355   - },
356   - /*
357   - Desenha ou reposiciona elementos na tela usando a biblioteca richdraw
358   -
359   - Parametros:
360   -
361   - tipo {string} - resizelinha|resizePoligono|insereCirculo tipo de opera&ccedil;&atilde;o
362   -
363   - objeto {object} - objeto gr&aacute;fico existente no container richdraw
364   -
365   - n {numeric} - &iacute;ndice do elemento no array pontosdistobj
366   -
367   - texto {string} - texto que ser&aacute; inserido no tipo "insereTexto"
368   - */
369   - aplica: function(tipo,objeto,n,texto){
370   - var dy,dx,w,c,
371   - pontosdistobj = i3GEO.analise.pontosdistobj;
372   - if(i3GEO.desenho.richdraw && $i(i3GEO.Interface.IDCORPO)){
373   - //pos = i3GEO.util.pegaPosicaoObjeto($i(i3GEO.Interface.IDCORPO));
374   - //
375   - //faz o reposicionamento de linhas quando o mouse &eacute; movido e a linha est&aacute; ativa
376   - //
377   - if((tipo==="resizeLinha") || (tipo==="resizePoligono")){
378   - try
379   - {i3GEO.desenho.richdraw.renderer.resize(objeto,0,0,objposicaocursor.imgx,objposicaocursor.imgy);}
380   - catch(erro){
381   - if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+erro);}
382   - }
383   - }
384   - if(tipo==="insereCirculo"){
385   - dx = Math.pow(((pontosdistobj.xtela[n])*1) - ((pontosdistobj.xtela[n-1])*1),2);
386   - dy = Math.pow(((pontosdistobj.ytela[n])*1) - ((pontosdistobj.ytela[n-1])*1),2);
387   - w = Math.sqrt(dx + dy);
388   - c = "";
389   - if(navn){
390   - c = 'rgba(255,255,255,0';
391   - }
392   - if(chro){
393   - c = "";
  229 + googleearth:{
  230 + insereMarca: function(description,ddx,ddy,name,snippet){
  231 + if(typeof(console) !== 'undefined'){console.info("i3GEO.Interface.googleearth.insereMarca()");}
  232 + var placemark = i3GeoMap.createPlacemark(''),
  233 + point = i3GeoMap.createPoint('');
  234 + placemark.setName(name);
  235 + point.setLatitude(ddy);
  236 + point.setLongitude(ddx);
  237 + placemark.setGeometry(point);
  238 + if(description !== "")
  239 + {placemark.setDescription(description);}
  240 + placemark.setSnippet(snippet);
  241 + i3GeoMap.getFeatures().appendChild(placemark);
  242 + },
  243 + //
  244 + //c&oacute;digo obtido em http://code.google.com/intl/pt-BR/apis/earth/documentation/geometries.html
  245 + //
  246 + insereCirculo: function(centerLng,centerLat,radius,name,snippet){
  247 + function makeCircle(centerLat, centerLng, radius) {
  248 + var ring = i3GeoMap.createLinearRing(''),
  249 + steps = 25,
  250 + i,
  251 + pi2 = Math.PI * 2,
  252 + lat,
  253 + lng;
  254 + for (i = 0; i < steps; i++) {
  255 + lat = centerLat + radius * Math.cos(i / steps * pi2);
  256 + lng = centerLng + radius * Math.sin(i / steps * pi2);
  257 + ring.getCoordinates().pushLatLngAlt(lat, lng, 0);
394 258 }
395   - i3GEO.desenho.insereCirculo(pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],w,c);
  259 + return ring;
396 260 }
397   - if(tipo==="insereTexto"){
  261 + var polygonPlacemark = i3GeoMap.createPlacemark(''),
  262 + poly = i3GeoMap.createPolygon(''),
  263 + polyStyle;
  264 + poly.setAltitudeMode(i3GeoMap.ALTITUDE_RELATIVE_TO_GROUND);
  265 + polygonPlacemark.setGeometry(poly);
  266 + polygonPlacemark.getGeometry().setOuterBoundary(makeCircle(centerLat, centerLng, radius));
  267 + polygonPlacemark.setName(name);
  268 + polygonPlacemark.setSnippet(snippet);
  269 + polygonPlacemark.setStyleSelector(i3GeoMap.createStyle(''));
  270 + polyStyle = polygonPlacemark.getStyleSelector().getPolyStyle();
  271 + polyStyle.setFill(0);
  272 + i3GeoMap.getFeatures().appendChild(polygonPlacemark);
  273 + },
  274 + insereLinha: function(xi,yi,xf,yf,name,snippet){
  275 + var lineStringPlacemark = i3GeoMap.createPlacemark(''),
  276 + lineString,
  277 + lineStyle;
  278 + lineStringPlacemark.setName(name);
  279 + lineString = i3GeoMap.createLineString('');
  280 + lineString.setAltitudeMode(i3GeoMap.ALTITUDE_RELATIVE_TO_GROUND);
  281 + lineStringPlacemark.setGeometry(lineString);
  282 + lineString.getCoordinates().pushLatLngAlt(yi, xi, 0);
  283 + lineString.getCoordinates().pushLatLngAlt(yf, xf, 0);
  284 +
  285 + lineStringPlacemark.setStyleSelector(i3GeoMap.createStyle(''));
  286 + lineStringPlacemark.setSnippet(snippet);
  287 + lineStyle = lineStringPlacemark.getStyleSelector().getLineStyle();
  288 + lineStyle.setWidth(3);
  289 +
  290 + i3GeoMap.getFeatures().appendChild(lineStringPlacemark);
  291 + },
  292 + removePlacemark: function(nome){
  293 + var features = i3GeoMap.getFeatures(),
  294 + n = features.getChildNodes().getLength(),
  295 + i,
  296 + nfeatures = [];
  297 + for(i=0;i<n;i++){
398 298 try{
399   - i3GEO.desenho.richdraw.renderer.create('text', '', i3GEO.desenho.richdraw.textColor, 1, pontosdistobj.ximg[n-1],pontosdistobj.yimg[n-1],"","",texto);
400   - }
401   - catch(men){
402   - if(typeof(console) !== 'undefined'){console.error("i3GEO.desenho "+men);}
  299 + if(features.getChildNodes().item(i).getName() === nome || features.getChildNodes().item(i).getDescription() === nome || features.getChildNodes().item(i).getSnippet() === nome){
  300 + //features.getChildNodes().item(i).setVisibility(false);
  301 + nfeatures.push(features.getChildNodes().item(i));
  302 + //features.removeChild(features.getChildNodes().item(i));
  303 + }
403 304 }
  305 + catch(e){}
  306 + }
  307 + n = nfeatures.length;
  308 + for(i=0;i<n;i++){
  309 + features.removeChild(nfeatures[i]);
404 310 }
405   - }
406   - },
407   - /*
408   - Insere um circulo no container de elementos gr&aacute;ficos
409   -
410   - Parametros:
411   -
412   - x {numerico} - posi&ccedil;&atilde;o do ponto em coordenadas de imagem
413   -
414   - y {numerico} - posi&ccedil;&atilde;o do ponto em coordenadas de imagem
415   -
416   - w {numerico} - raio do c&iacute;rculo em pixels
417   -
418   - b {string} - cor do fundo
419   - */
420   - insereCirculo: function(x,y,w,b){
421   - if(!b){
422   - b = "";
423   - }
424   - try{
425   - i3GEO.desenho.richdraw.renderer.create('circ', b, i3GEO.desenho.richdraw.circColor, i3GEO.desenho.richdraw.lineWidth, x,y,w,w);
426   - }
427   - catch(men){
428   - if(typeof(console) !== 'undefined'){console.error(men);}
429   - }
430   - },
431   - /*
432   - Aplica um determinado padrao de estilos para os novos elementos que ser&atilde;o adicionados
433   -
434   - Para obter o estilo padrao, utilize i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao];
435   -
436   - Parametro:
437   -
438   - padrao {string} - nome do estilo
439   - */
440   - definePadrao: function(padrao){
441   - i3GEO.desenho.estiloPadrao = padrao;
442   - //@TODO remover apos refatorar o codigo
443   - padrao = i3GEO.desenho.estilosOld[padrao];
444   - if(i3GEO.desenho.richdraw){
445   - i3GEO.desenho.richdraw.editCommand('fillcolor', padrao.fillcolor);
446   - i3GEO.desenho.richdraw.editCommand('linecolor', padrao.linecolor);
447   - i3GEO.desenho.richdraw.editCommand('linewidth', padrao.linewidth);
448   - i3GEO.desenho.richdraw.editCommand('circcolor', padrao.circcolor);
449   - i3GEO.desenho.richdraw.editCommand('textcolor', padrao.textcolor);
450 311 }
451 312 },
452 313 /*
... ...
classesjs/classe_interface.js
... ... @@ -2660,15 +2660,6 @@ i3GEO.Interface = {
2660 2660 {i3GEO.Interface.googleearth.aguarde.visibility = "hidden";}
2661 2661 }
2662 2662 );
2663   - /*
2664   - google.earth.addEventListener(
2665   - i3GeoMap.getView(),
2666   - 'viewchangeend',
2667   - function(event){
2668   - i3GEO.eventos.MOUSECLIQUE = [];
2669   - }
2670   - );
2671   - */
2672 2663 },
2673 2664 recalcPar: function(){
2674 2665 var bounds;
... ... @@ -2717,88 +2708,6 @@ i3GEO.Interface = {
2717 2708 b.setFeature(placemark);
2718 2709 i3GeoMap.setBalloon(b);
2719 2710 },
2720   - insereMarca: function(description,ddx,ddy,name,snippet){
2721   - if(typeof(console) !== 'undefined'){console.info("i3GEO.Interface.googleearth.insereMarca()");}
2722   - var placemark = i3GeoMap.createPlacemark(''),
2723   - point = i3GeoMap.createPoint('');
2724   - placemark.setName(name);
2725   - point.setLatitude(ddy);
2726   - point.setLongitude(ddx);
2727   - placemark.setGeometry(point);
2728   - if(description !== "")
2729   - {placemark.setDescription(description);}
2730   - placemark.setSnippet(snippet);
2731   - i3GeoMap.getFeatures().appendChild(placemark);
2732   - },
2733   - //
2734   - //c&oacute;digo obtido em http://code.google.com/intl/pt-BR/apis/earth/documentation/geometries.html
2735   - //
2736   - insereCirculo: function(centerLng,centerLat,radius,name,snippet){
2737   - function makeCircle(centerLat, centerLng, radius) {
2738   - var ring = i3GeoMap.createLinearRing(''),
2739   - steps = 25,
2740   - i,
2741   - pi2 = Math.PI * 2,
2742   - lat,
2743   - lng;
2744   - for (i = 0; i < steps; i++) {
2745   - lat = centerLat + radius * Math.cos(i / steps * pi2);
2746   - lng = centerLng + radius * Math.sin(i / steps * pi2);
2747   - ring.getCoordinates().pushLatLngAlt(lat, lng, 0);
2748   - }
2749   - return ring;
2750   - }
2751   - var polygonPlacemark = i3GeoMap.createPlacemark(''),
2752   - poly = i3GeoMap.createPolygon(''),
2753   - polyStyle;
2754   - poly.setAltitudeMode(i3GeoMap.ALTITUDE_RELATIVE_TO_GROUND);
2755   - polygonPlacemark.setGeometry(poly);
2756   - polygonPlacemark.getGeometry().setOuterBoundary(makeCircle(centerLat, centerLng, radius));
2757   - polygonPlacemark.setName(name);
2758   - polygonPlacemark.setSnippet(snippet);
2759   - polygonPlacemark.setStyleSelector(i3GeoMap.createStyle(''));
2760   - polyStyle = polygonPlacemark.getStyleSelector().getPolyStyle();
2761   - polyStyle.setFill(0);
2762   - i3GeoMap.getFeatures().appendChild(polygonPlacemark);
2763   - },
2764   - insereLinha: function(xi,yi,xf,yf,name,snippet){
2765   - var lineStringPlacemark = i3GeoMap.createPlacemark(''),
2766   - lineString,
2767   - lineStyle;
2768   - lineStringPlacemark.setName(name);
2769   - lineString = i3GeoMap.createLineString('');
2770   - lineString.setAltitudeMode(i3GeoMap.ALTITUDE_RELATIVE_TO_GROUND);
2771   - lineStringPlacemark.setGeometry(lineString);
2772   - lineString.getCoordinates().pushLatLngAlt(yi, xi, 0);
2773   - lineString.getCoordinates().pushLatLngAlt(yf, xf, 0);
2774   -
2775   - lineStringPlacemark.setStyleSelector(i3GeoMap.createStyle(''));
2776   - lineStringPlacemark.setSnippet(snippet);
2777   - lineStyle = lineStringPlacemark.getStyleSelector().getLineStyle();
2778   - lineStyle.setWidth(3);
2779   -
2780   - i3GeoMap.getFeatures().appendChild(lineStringPlacemark);
2781   - },
2782   - removePlacemark: function(nome){
2783   - var features = i3GeoMap.getFeatures(),
2784   - n = features.getChildNodes().getLength(),
2785   - i,
2786   - nfeatures = [];
2787   - for(i=0;i<n;i++){
2788   - try{
2789   - if(features.getChildNodes().item(i).getName() === nome || features.getChildNodes().item(i).getDescription() === nome || features.getChildNodes().item(i).getSnippet() === nome){
2790   - //features.getChildNodes().item(i).setVisibility(false);
2791   - nfeatures.push(features.getChildNodes().item(i));
2792   - //features.removeChild(features.getChildNodes().item(i));
2793   - }
2794   - }
2795   - catch(e){}
2796   - }
2797   - n = nfeatures.length;
2798   - for(i=0;i<n;i++){
2799   - features.removeChild(nfeatures[i]);
2800   - }
2801   - },
2802 2711 /*
2803 2712 Function: adicionaKml
2804 2713  
... ...
classesjs/classe_util.js
... ... @@ -862,7 +862,7 @@ i3GEO.util = {
862 862 if(!srci || srci === "")
863 863 {srci = i3GEO.configura.locaplic+"/imagens/dot2.gif";}
864 864 if(i3GEO.Interface.ATUAL === "googleearth"){
865   - i3GEO.Interface.googleearth.insereMarca(texto,xi,yi,container);
  865 + i3GEO.desenho.googleearth.insereMarca(texto,xi,yi,container);
866 866 return;
867 867 }
868 868 try{
... ...
guia_de_migracao.txt
... ... @@ -19,6 +19,8 @@ Para a versão 6.0
19 19  
20 20 - a ordem dos botões na barra de botões foi alterada para mostrar primeiro o botão da barra de edição
21 21  
  22 +- as funções de desenho de elementos gráficos utilizados pela interface GoogleEarth foram movidos de classesjs/classe_interface.js para classe_desenho.js
  23 +
22 24  
23 25  
24 26 -------------------------------------------------------------------------------------------------
... ...