Commit 7ec1d02e644853bd159b2e342fd6758178495b74

Authored by Edmar Moretti
1 parent 525cb5b5

-

classesjs/classe_analise.js
@@ -317,7 +317,7 @@ i3GEO.analise = { @@ -317,7 +317,7 @@ i3GEO.analise = {
317 var janela; 317 var janela;
318 i3GEO.eventos.cliquePerm.ativa(); 318 i3GEO.eventos.cliquePerm.ativa();
319 //@TODO remover 319 //@TODO remover
320 - if(i3GEO.Interface.ATUAL !== "openlayers"){ 320 + if(i3GEO.Interface.ATUAL !== "openlayers" && i3GEO.Interface.ATUAL !== "googlemaps"){
321 i3GEO.Interface.ATUAL !== "googleearth" ? i3GEO.desenho.richdraw.fecha() : i3GEO.Interface.googleearth.removePlacemark("divGeometriasTemp"); 321 i3GEO.Interface.ATUAL !== "googleearth" ? i3GEO.desenho.richdraw.fecha() : i3GEO.Interface.googleearth.removePlacemark("divGeometriasTemp");
322 i3GEO.util.removeChild("pontosins"); 322 i3GEO.util.removeChild("pontosins");
323 if($i("divGeometriasTemp")) 323 if($i("divGeometriasTemp"))
@@ -436,7 +436,7 @@ i3GEO.analise = { @@ -436,7 +436,7 @@ i3GEO.analise = {
436 //raio 436 //raio
437 if($i("pararraios") && $i("pararraios").checked === true ){ 437 if($i("pararraios") && $i("pararraios").checked === true ){
438 circ = new OpenLayers.Feature.Vector( 438 circ = new OpenLayers.Feature.Vector(
439 - OpenLayers.Geometry.Polygon.createRegularPolygon( 439 + OpenLayers.Geometry.Polygon.createRegularPolygon(
440 point, 440 point,
441 raio, 441 raio,
442 30 442 30
@@ -548,29 +548,126 @@ i3GEO.analise = { @@ -548,29 +548,126 @@ i3GEO.analise = {
548 } 548 }
549 }, 549 },
550 googlemaps:{ 550 googlemaps:{
  551 + /**
  552 + * Inicializa o processo
  553 + * Cria a variavel para guardar os pontos
  554 + * Executa a funcao de inicializacao do desenho, que cria o layer para receber os graficos
  555 + */
551 inicia: function(){ 556 inicia: function(){
552 - if (g_tipoacao !== "mede"){  
553 - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeDistancia.clique()") < 0)  
554 - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeDistancia.clique()");}  
555 - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeDistancia.movimento()") < 0)  
556 - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeDistancia.movimento()");}  
557 - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeDistancia.fechaJanela()") < 0)  
558 - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeDistancia.fechaJanela()");}  
559 - $i("mostradistancia").style.display="block";  
560 - i3GEO.desenho.criaContainerRichdraw();  
561 - i3GEO.desenho.richdraw.lineColor = "black";  
562 - i3GEO.desenho.richdraw.lineWidth = "2px";  
563 - g_tipoacao = "mede";  
564 - }  
565 - else{  
566 - i3GEO.desenho.richdraw.fecha();  
567 - var Dom = YAHOO.util.Dom;  
568 - Dom.setStyle("mostradistancia","display","none");  
569 - Dom.setStyle("pontosins","display","none"); 557 + var linha,evtclick,evtmousemove,
  558 + estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao];
  559 + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia();
  560 + i3GeoMap.setOptions({disableDoubleClickZoom:true});
  561 + i3GEO.analise.medeDistancia.pontos = {
  562 + xpt: [],
  563 + ypt: [],
  564 + dist: [],
  565 + mvcLine: new google.maps.MVCArray(),
  566 + mvcMarkers: new google.maps.MVCArray(),
  567 + line: null,
  568 + polygon: null
  569 + };
  570 + var pontos = i3GEO.analise.medeDistancia.pontos;
  571 + evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) {
  572 + // When the map is clicked, pass the LatLng obect to the measureAdd function
  573 + pontos.mvcLine.push(evt.latLng);
  574 + pontos.xpt.push(evt.latLng.lng());
  575 + pontos.ypt.push(evt.latLng.lat());
  576 + //mais um ponto para criar uma linha movel
  577 + pontos.mvcLine.push(evt.latLng);
  578 + });
  579 + evtmousemove = google.maps.event.addListener(i3GeoMap, "mousemove", function(evt) {
  580 + // If there is more than one vertex on the line
  581 + if (pontos.mvcLine.getLength() > 1) {
  582 + // If the line hasn't been created yet
  583 + if (!pontos.line) {
  584 + // Create the line (google.maps.Polyline)
  585 + pontos.line = new google.maps.Polyline({
  586 + map: i3GeoMap,
  587 + clickable: false,
  588 + strokeColor: "#FF0000",
  589 + strokeOpacity: 1,
  590 + strokeWeight: 3,
  591 + path:pontos.mvcLine
  592 + });
  593 + }
  594 + pontos.mvcLine.pop();
  595 + pontos.mvcLine.push(evt.latLng);
  596 + }
  597 + });
  598 + google.maps.event.addListener(i3GeoMap, "dblclick", function(evt) {
  599 + google.maps.event.removeListener(evtclick);
  600 + google.maps.event.removeListener(evtmousemove);
  601 + i3GEO.analise.medeDistancia.googlemaps.inicia();
  602 + });
  603 +
  604 + },
  605 + /**
  606 + * Soma os valores de distancia guardados em pontos.dist
  607 + */
  608 + somaDist: function(){
  609 + var n,i,
  610 + total = 0;
  611 + n = i3GEO.analise.medeDistancia.pontos.dist.length;
  612 + for(i=0;i<n;i++){
  613 + total += i3GEO.analise.medeDistancia.pontos.dist[i];
570 } 614 }
  615 + return total;
571 }, 616 },
  617 + /**
  618 + * Fecha a janela que mostra os dados
  619 + * Pergunta ao usuario se os graficos devem ser removidos
  620 + * Os graficos sao marcados com o atributo "origem"
  621 + * Os raios e pontos sao sempre removidos
  622 + */
572 fechaJanela: function(){ 623 fechaJanela: function(){
573 - 624 + i3GeoMap.setOptions({disableDoubleClickZoom:false});
  625 + /*
  626 + var temp,
  627 + controle = i3geoOL.getControlsBy("id","i3GeoMedeDistancia"),
  628 + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeDistancia");
  629 +
  630 + if(controle.length > 0){
  631 + controle[0].deactivate();
  632 + i3geoOL.removeControl(controle[0]);
  633 + }
  634 + if(f && f.length > 0){
  635 + temp = window.confirm($trad("x94"));
  636 + if(temp){
  637 + i3GEO.desenho.layergrafico.destroyFeatures(f);
  638 + }
  639 + }
  640 + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeDistanciaExcluir");
  641 + if(f && f.length > 0){
  642 + i3GEO.desenho.layergrafico.destroyFeatures(f);
  643 + }
  644 + */
  645 + },
  646 + /**
  647 + * Mostra a totalizacao das linhas ja digitalizadas
  648 + */
  649 + mostraTotal: function(trecho,total){
  650 + var mostra = $i("mostradistancia_calculo"),
  651 + texto;
  652 + if (mostra){
  653 + texto = "<b>"+$trad("x96")+":</b> "+total.toFixed(3)+" km"+
  654 + "<br><b>"+$trad("x96")+":</b> "+(total*1000).toFixed(2)+" m"+
  655 + "<br>"+$trad("x25")+": "+i3GEO.calculo.metododistancia;
  656 + mostra.innerHTML = texto;
  657 + }
  658 + },
  659 + /**
  660 + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
  661 + */
  662 + mostraParcial: function(trecho,parcial,direcao){
  663 + var mostra = $i("mostradistancia_calculo_movel"),
  664 + texto;
  665 + if (mostra){
  666 + texto = "<b>"+$trad("x95")+":</b> "+trecho.toFixed(3)+" km"+
  667 + "<br><b>"+$trad("x97")+":</b> "+(parcial + trecho).toFixed(3)+" km" +
  668 + "<br><b>"+$trad("x23")+" (DMS):</b> "+direcao.toFixed(4);
  669 + mostra.innerHTML = texto;
  670 + }
574 } 671 }
575 }, 672 },
576 googleearth:{ 673 googleearth:{
@@ -973,231 +1070,231 @@ i3GEO.analise = { @@ -973,231 +1070,231 @@ i3GEO.analise = {
973 } 1070 }
974 ); 1071 );
975 i3geoOL.addControl(poligono); 1072 i3geoOL.addControl(poligono);
976 - }  
977 - },  
978 - /**  
979 - * Soma os valores de distancia guardados em pontos.dist  
980 - */  
981 - somaDist: function(){  
982 - var n,i,  
983 - total = 0;  
984 - n = i3GEO.analise.medeArea.pontos.dist.length;  
985 - for(i=0;i<n;i++){  
986 - total += i3GEO.analise.medeArea.pontos.dist[i];  
987 - }  
988 - return total;  
989 - },  
990 - /**  
991 - * Fecha a janela que mostra os dados  
992 - * Pergunta ao usuario se os graficos devem ser removidos  
993 - * Os graficos sao marcados com o atributo "origem"  
994 - * Os raios e pontos sao sempre removidos  
995 - */  
996 - fechaJanela: function(){  
997 - var temp,  
998 - controle = i3geoOL.getControlsBy("id","i3GeoMedeArea"),  
999 - f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeArea");  
1000 - if(controle.length > 0){  
1001 - controle[0].deactivate();  
1002 - i3geoOL.removeControl(controle[0]);  
1003 - }  
1004 - if(f && f.length > 0){  
1005 - temp = window.confirm($trad("x94"));  
1006 - if(temp){ 1073 + }
  1074 + },
  1075 + /**
  1076 + * Soma os valores de distancia guardados em pontos.dist
  1077 + */
  1078 + somaDist: function(){
  1079 + var n,i,
  1080 + total = 0;
  1081 + n = i3GEO.analise.medeArea.pontos.dist.length;
  1082 + for(i=0;i<n;i++){
  1083 + total += i3GEO.analise.medeArea.pontos.dist[i];
  1084 + }
  1085 + return total;
  1086 + },
  1087 + /**
  1088 + * Fecha a janela que mostra os dados
  1089 + * Pergunta ao usuario se os graficos devem ser removidos
  1090 + * Os graficos sao marcados com o atributo "origem"
  1091 + * Os raios e pontos sao sempre removidos
  1092 + */
  1093 + fechaJanela: function(){
  1094 + var temp,
  1095 + controle = i3geoOL.getControlsBy("id","i3GeoMedeArea"),
  1096 + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeArea");
  1097 + if(controle.length > 0){
  1098 + controle[0].deactivate();
  1099 + i3geoOL.removeControl(controle[0]);
  1100 + }
  1101 + if(f && f.length > 0){
  1102 + temp = window.confirm($trad("x94"));
  1103 + if(temp){
  1104 + i3GEO.desenho.layergrafico.destroyFeatures(f);
  1105 + }
  1106 + }
  1107 + f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeAreaExcluir");
  1108 + if(f && f.length > 0){
1007 i3GEO.desenho.layergrafico.destroyFeatures(f); 1109 i3GEO.desenho.layergrafico.destroyFeatures(f);
1008 } 1110 }
1009 - }  
1010 - f = i3GEO.desenho.layergrafico.getFeaturesByAttribute("origem","medeAreaExcluir");  
1011 - if(f && f.length > 0){  
1012 - i3GEO.desenho.layergrafico.destroyFeatures(f);  
1013 - }  
1014 - },  
1015 - /**  
1016 - * Mostra a totalizacao das linhas ja digitalizadas  
1017 - */  
1018 - mostraTotal: function(per,area){  
1019 - var mostra = $i("mostraarea_calculo"),  
1020 - texto;  
1021 - if (mostra){  
1022 - texto = "<b>"+$trad("d21at")+":</b> "+(area/1000000).toFixed(3)+" km2"+  
1023 - "<br><b>"+$trad("d21at")+":</b> "+(area/10000).toFixed(2)+" ha"+  
1024 - "<br><b>"+$trad("x98")+":</b> "+(per).toFixed(2)+" km"+  
1025 - "<br>"+$trad("x25")+": "+i3GEO.calculo.metododistancia;  
1026 - mostra.innerHTML = texto; 1111 + },
  1112 + /**
  1113 + * Mostra a totalizacao das linhas ja digitalizadas
  1114 + */
  1115 + mostraTotal: function(per,area){
  1116 + var mostra = $i("mostraarea_calculo"),
  1117 + texto;
  1118 + if (mostra){
  1119 + texto = "<b>"+$trad("d21at")+":</b> "+(area/1000000).toFixed(3)+" km2"+
  1120 + "<br><b>"+$trad("d21at")+":</b> "+(area/10000).toFixed(2)+" ha"+
  1121 + "<br><b>"+$trad("x98")+":</b> "+(per).toFixed(2)+" km"+
  1122 + "<br>"+$trad("x25")+": "+i3GEO.calculo.metododistancia;
  1123 + mostra.innerHTML = texto;
  1124 + }
  1125 + },
  1126 + /**
  1127 + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
  1128 + */
  1129 + mostraParcial: function(trecho,per,area,direcao){
  1130 + var mostra = $i("mostraarea_calculo_parcial"),
  1131 + texto;
  1132 + if (mostra){
  1133 + texto = "<b>"+$trad("d21at")+":</b> "+(area/1000000).toFixed(3)+" km2"+
  1134 + "<br><b>"+$trad("d21at")+":</b> "+(area/10000).toFixed(2)+" ha"+
  1135 + "<br><b>"+$trad("x95")+":</b> "+trecho.toFixed(3)+" km"+
  1136 + "<br><b>"+$trad("x98")+":</b> "+(per).toFixed(3)+" km" +
  1137 + "<br><b>"+$trad("x23")+" (DMS):</b> "+direcao.toFixed(4);
  1138 + mostra.innerHTML = texto;
  1139 + }
1027 } 1140 }
1028 }, 1141 },
1029 - /**  
1030 - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse  
1031 - */  
1032 - mostraParcial: function(trecho,per,area,direcao){  
1033 - var mostra = $i("mostraarea_calculo_parcial"),  
1034 - texto;  
1035 - if (mostra){  
1036 - texto = "<b>"+$trad("d21at")+":</b> "+(area/1000000).toFixed(3)+" km2"+  
1037 - "<br><b>"+$trad("d21at")+":</b> "+(area/10000).toFixed(2)+" ha"+  
1038 - "<br><b>"+$trad("x95")+":</b> "+trecho.toFixed(3)+" km"+  
1039 - "<br><b>"+$trad("x98")+":</b> "+(per).toFixed(3)+" km" +  
1040 - "<br><b>"+$trad("x23")+" (DMS):</b> "+direcao.toFixed(4);  
1041 - mostra.innerHTML = texto;  
1042 - }  
1043 - }  
1044 - },  
1045 - googlemaps: {  
1046 - inicia: function(){  
1047 - var x,y,ll1,ll2,d,  
1048 - calculo = i3GEO.calculo,  
1049 - montacontainer = function(){  
1050 - var desenho = i3GEO.desenho;  
1051 - $i("mostraarea_calculo").innerHTML = "Clique no mapa para desenhar o poligono. Clique duas vezes para concluir";  
1052 - i3GEO.barraDeBotoes.ativaIcone("area");  
1053 - g_tipoacao = "area";  
1054 - desenho.criaContainerRichdraw();  
1055 - desenho.richdraw.lineColor = "green";  
1056 - desenho.richdraw.lineWidth = "2px";  
1057 - };  
1058 - i3GEO.analise.medeArea.criaJanela();  
1059 - if (g_tipoacao !== "area"){  
1060 - $i("mostraarea_calculo").innerHTML = "";  
1061 - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)  
1062 - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}  
1063 - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)  
1064 - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}  
1065 - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)  
1066 - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}  
1067 - //  
1068 - //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel  
1069 - //essa funcao e embutida em i3GEO.calculo.tela2dd  
1070 - //  
1071 - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){  
1072 - x = parseInt(i3GEO.parametros.w / 2,10);  
1073 - y = parseInt(i3GEO.parametros.h / 2,10);  
1074 - ll1 = calculo.tela2dd(x,y,"","");  
1075 - ll2 = calculo.tela2dd(x + 1,y,"","");  
1076 - d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);  
1077 - d = d * 1000;  
1078 - g_areapixel = d * d;  
1079 - g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer(); 1142 + googlemaps: {
  1143 + inicia: function(){
  1144 + var x,y,ll1,ll2,d,
  1145 + calculo = i3GEO.calculo,
  1146 + montacontainer = function(){
  1147 + var desenho = i3GEO.desenho;
  1148 + $i("mostraarea_calculo").innerHTML = "Clique no mapa para desenhar o poligono. Clique duas vezes para concluir";
  1149 + i3GEO.barraDeBotoes.ativaIcone("area");
  1150 + g_tipoacao = "area";
  1151 + desenho.criaContainerRichdraw();
  1152 + desenho.richdraw.lineColor = "green";
  1153 + desenho.richdraw.lineWidth = "2px";
  1154 + };
  1155 + i3GEO.analise.medeArea.criaJanela();
  1156 + if (g_tipoacao !== "area"){
  1157 + $i("mostraarea_calculo").innerHTML = "";
  1158 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)
  1159 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}
  1160 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)
  1161 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}
  1162 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)
  1163 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}
  1164 + //
  1165 + //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel
  1166 + //essa funcao e embutida em i3GEO.calculo.tela2dd
  1167 + //
  1168 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  1169 + x = parseInt(i3GEO.parametros.w / 2,10);
  1170 + y = parseInt(i3GEO.parametros.h / 2,10);
  1171 + ll1 = calculo.tela2dd(x,y,"","");
  1172 + ll2 = calculo.tela2dd(x + 1,y,"","");
  1173 + d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);
  1174 + d = d * 1000;
  1175 + g_areapixel = d * d;
  1176 + g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer();
  1177 + }
1080 } 1178 }
  1179 + else{i3GEO.desenho.richdraw.fecha();}
  1180 + },
  1181 + fechaJanela: function(){
1081 } 1182 }
1082 - else{i3GEO.desenho.richdraw.fecha();}  
1083 }, 1183 },
1084 - fechaJanela: function(){  
1085 - }  
1086 - },  
1087 - googleearth: {  
1088 - inicia: function(){  
1089 - var x,y,ll1,ll2,d,  
1090 - calculo = i3GEO.calculo,  
1091 - montacontainer = function(){  
1092 - var desenho = i3GEO.desenho;  
1093 - $i("mostraarea_calculo").innerHTML = "Clique no mapa para desenhar o poligono. Clique duas vezes para concluir";  
1094 - i3GEO.barraDeBotoes.ativaIcone("area");  
1095 - g_tipoacao = "area";  
1096 - desenho.criaContainerRichdraw();  
1097 - desenho.richdraw.lineColor = "green";  
1098 - desenho.richdraw.lineWidth = "2px";  
1099 - };  
1100 - i3GEO.analise.medeArea.criaJanela();  
1101 - if (g_tipoacao !== "area"){  
1102 - $i("mostraarea_calculo").innerHTML = "";  
1103 - if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)  
1104 - {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}  
1105 - if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)  
1106 - {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}  
1107 - if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)  
1108 - {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}  
1109 - //  
1110 - //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel  
1111 - //essa funcao e embutida em i3GEO.calculo.tela2dd  
1112 - //  
1113 - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){  
1114 - x = parseInt(i3GEO.parametros.w / 2,10);  
1115 - y = parseInt(i3GEO.parametros.h / 2,10);  
1116 - ll1 = calculo.tela2dd(x,y,"","");  
1117 - ll2 = calculo.tela2dd(x + 1,y,"","");  
1118 - d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);  
1119 - d = d * 1000;  
1120 - g_areapixel = d * d;  
1121 - g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer(); 1184 + googleearth: {
  1185 + inicia: function(){
  1186 + var x,y,ll1,ll2,d,
  1187 + calculo = i3GEO.calculo,
  1188 + montacontainer = function(){
  1189 + var desenho = i3GEO.desenho;
  1190 + $i("mostraarea_calculo").innerHTML = "Clique no mapa para desenhar o poligono. Clique duas vezes para concluir";
  1191 + i3GEO.barraDeBotoes.ativaIcone("area");
  1192 + g_tipoacao = "area";
  1193 + desenho.criaContainerRichdraw();
  1194 + desenho.richdraw.lineColor = "green";
  1195 + desenho.richdraw.lineWidth = "2px";
  1196 + };
  1197 + i3GEO.analise.medeArea.criaJanela();
  1198 + if (g_tipoacao !== "area"){
  1199 + $i("mostraarea_calculo").innerHTML = "";
  1200 + if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEO.analise.medeArea.clique()") < 0)
  1201 + {i3GEO.eventos.MOUSECLIQUE.push("i3GEO.analise.medeArea.clique()");}
  1202 + if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.analise.medeArea.movimento()") < 0)
  1203 + {i3GEO.eventos.MOUSEMOVE.push("i3GEO.analise.medeArea.movimento()");}
  1204 + if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.analise.medeArea.fechaJanela()") < 0)
  1205 + {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.analise.medeArea.fechaJanela()");}
  1206 + //
  1207 + //a API do Openlayers e GoogleMaps tem uma funcao propria de obtencao da resolucao de cada pixel
  1208 + //essa funcao e embutida em i3GEO.calculo.tela2dd
  1209 + //
  1210 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  1211 + x = parseInt(i3GEO.parametros.w / 2,10);
  1212 + y = parseInt(i3GEO.parametros.h / 2,10);
  1213 + ll1 = calculo.tela2dd(x,y,"","");
  1214 + ll2 = calculo.tela2dd(x + 1,y,"","");
  1215 + d = calculo.distancia(ll1[0],ll1[1],ll2[0],ll2[1]);
  1216 + d = d * 1000;
  1217 + g_areapixel = d * d;
  1218 + g_areapixel < 0 ? i3GEO.janela.tempoMsg("Nao e possivel calcular a area. Entre em contato com o administrador do sistema.") : montacontainer();
  1219 + }
1122 } 1220 }
  1221 + else{i3GEO.desenho.richdraw.fecha();}
  1222 + },
  1223 + fechaJanela: function(){
1123 } 1224 }
1124 - else{i3GEO.desenho.richdraw.fecha();}  
1125 }, 1225 },
1126 - fechaJanela: function(){  
1127 - }  
1128 - },  
1129 1226
1130 1227
1131 1228
1132 - ////////////////////////////////////////////  
1133 - /* 1229 + ////////////////////////////////////////////
  1230 + /*
1134 Adiciona uma marca na tela e realiza o calculo de distancia dos pontos inseridos 1231 Adiciona uma marca na tela e realiza o calculo de distancia dos pontos inseridos
1135 - */  
1136 - clique: function(){  
1137 - var n,m;  
1138 - pontosdistobj = i3GEO.analise.pontosdistobj;  
1139 - if (g_tipoacao === "area"){  
1140 - n = pontosdistobj.xpt.length;  
1141 - pontosdistobj.xpt[n] = objposicaocursor.ddx;  
1142 - pontosdistobj.ypt[n] = objposicaocursor.ddy;  
1143 - pontosdistobj.xtela[n] = objposicaocursor.telax;  
1144 - pontosdistobj.ytela[n] = objposicaocursor.telay;  
1145 - pontosdistobj.ximg[n] = objposicaocursor.imgx;  
1146 - pontosdistobj.yimg[n] = objposicaocursor.imgy;  
1147 - pontosdistobj.dist[n] = 0;  
1148 - //inclui a linha para ligar com o ponto inicial  
1149 - if (n === 0){  
1150 - try {  
1151 - 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); 1232 + */
  1233 + clique: function(){
  1234 + var n,m;
  1235 + pontosdistobj = i3GEO.analise.pontosdistobj;
  1236 + if (g_tipoacao === "area"){
  1237 + n = pontosdistobj.xpt.length;
  1238 + pontosdistobj.xpt[n] = objposicaocursor.ddx;
  1239 + pontosdistobj.ypt[n] = objposicaocursor.ddy;
  1240 + pontosdistobj.xtela[n] = objposicaocursor.telax;
  1241 + pontosdistobj.ytela[n] = objposicaocursor.telay;
  1242 + pontosdistobj.ximg[n] = objposicaocursor.imgx;
  1243 + pontosdistobj.yimg[n] = objposicaocursor.imgy;
  1244 + pontosdistobj.dist[n] = 0;
  1245 + //inclui a linha para ligar com o ponto inicial
  1246 + if (n === 0){
  1247 + try {
  1248 + 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);
  1249 + }
  1250 + catch(e){
  1251 + if(typeof(console) !== 'undefined'){console.error(e);}
  1252 + }
1152 } 1253 }
1153 - catch(e){  
1154 - if(typeof(console) !== 'undefined'){console.error(e);} 1254 + else{
  1255 + if(navm)
  1256 + {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]);}
  1257 + //parece qe tem um problema de versao do ie aqui
  1258 + //if(navm)
  1259 + //{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]);}
1155 } 1260 }
  1261 + try{
  1262 + 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);
  1263 + }
  1264 + catch(men){
  1265 + if(typeof(console) !== 'undefined'){console.error(men);}
  1266 + }
  1267 + m = i3GEO.calculo.area(pontosdistobj.xtela,pontosdistobj.ytela,g_areapixel);
  1268 + 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));
  1269 + if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){
  1270 + i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);
  1271 + i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");
  1272 + }
  1273 + if(i3GEO.Interface.ATUAL === "googleearth")
  1274 + {i3GEO.util.insereMarca.cria(objposicaocursor.ddx,objposicaocursor.ddy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","");}
1156 } 1275 }
1157 - else{  
1158 - if(navm)  
1159 - {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]);}  
1160 - //parece qe tem um problema de versao do ie aqui  
1161 - //if(navm)  
1162 - //{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]);}  
1163 - }  
1164 - try{  
1165 - 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);  
1166 - }  
1167 - catch(men){  
1168 - if(typeof(console) !== 'undefined'){console.error(men);}  
1169 - }  
1170 - m = i3GEO.calculo.area(pontosdistobj.xtela,pontosdistobj.ytela,g_areapixel);  
1171 - 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));  
1172 - if(i3GEO.util.in_array(i3GEO.Interface.ATUAL,["openlayers","googlemaps"])){  
1173 - i3GEO.util.insereMarca.cria(objposicaocursor.imgx,objposicaocursor.imgy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","",i3GEO.configura.locaplic+"/imagens/estasel.png",6,6);  
1174 - i3GEO.desenho.insereCirculo(objposicaocursor.imgx,objposicaocursor.imgy,3,"white");  
1175 - }  
1176 - if(i3GEO.Interface.ATUAL === "googleearth")  
1177 - {i3GEO.util.insereMarca.cria(objposicaocursor.ddx,objposicaocursor.ddy,i3GEO.analise.medeArea.paraCalculo,"divGeometriasTemp","");}  
1178 - }  
1179 - },  
1180 - /* 1276 + },
  1277 + /*
1181 Para o calculo de area e ativa o botao "pan" 1278 Para o calculo de area e ativa o botao "pan"
1182 - */  
1183 - paraCalculo: function(){  
1184 - var botaoPan = $i("pan");  
1185 - g_tipoacao = "";  
1186 - botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();  
1187 - },  
1188 - /* 1279 + */
  1280 + paraCalculo: function(){
  1281 + var botaoPan = $i("pan");
  1282 + g_tipoacao = "";
  1283 + botaoPan ? botaoPan.onclick.call() : i3GEO.barraDeBotoes.ativaBotoes();
  1284 + },
  1285 + /*
1189 Realiza o desenho do poligono conforme o usuario movimenta o mouse 1286 Realiza o desenho do poligono conforme o usuario movimenta o mouse
1190 - */  
1191 - movimento: function(){  
1192 - var n,  
1193 - pontosdistobj = i3GEO.analise.pontosdistobj;  
1194 - if (g_tipoacao === "area"){  
1195 - n = pontosdistobj.xpt.length;  
1196 - if (n > 0){  
1197 - i3GEO.desenho.aplica("resizePoligono",pontosdistobj.linhastemp,1);  
1198 - i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n); 1287 + */
  1288 + movimento: function(){
  1289 + var n,
  1290 + pontosdistobj = i3GEO.analise.pontosdistobj;
  1291 + if (g_tipoacao === "area"){
  1292 + n = pontosdistobj.xpt.length;
  1293 + if (n > 0){
  1294 + i3GEO.desenho.aplica("resizePoligono",pontosdistobj.linhastemp,1);
  1295 + i3GEO.desenho.aplica("resizeLinha",pontosdistobj.linhas[n-1],n);
  1296 + }
1199 } 1297 }
1200 } 1298 }
1201 } 1299 }
1202 -}  
1203 }; 1300 };
classesjs/classe_desenho.js
@@ -213,6 +213,10 @@ i3GEO.desenho = { @@ -213,6 +213,10 @@ i3GEO.desenho = {
213 } 213 }
214 } 214 }
215 }, 215 },
  216 + googlemaps: {
  217 + inicia: function(){
  218 + }
  219 + },
216 /* 220 /*
217 Cria os elementos 'dom' necess&aacute;rios ao uso das fun&ccedil;&otilde;es de desenho sobre o mapa. 221 Cria os elementos 'dom' necess&aacute;rios ao uso das fun&ccedil;&otilde;es de desenho sobre o mapa.
218 222