Commit 73aff5d074f704b109a97c7b5ea0da26d608c905

Authored by Edmar Moretti
1 parent 83da6908

Reformulação do código da ferramenta de cálculo de distâncias para permitir a mo…

…dificação da função que mostra os totais e as parciais
ferramentas/area/index.js
... ... @@ -4,23 +4,14 @@ if (typeof (i3GEOF) === 'undefined') {
4 4 i3GEOF.area =
5 5 {
6 6 position: [150,0],
7   - /**
8   - * Armazena os pontos clicados para realizar os calculos
9   - */
10   - pontos : {},
11   - /**
12   - * Armazena o WKT da ultima linha
13   - */
14   - ultimoWkt : "",
15   - /**
16   - * Armazena a ultima medida
17   - */
18   - ultimaMedida : "",
19 7 renderFunction: i3GEO.janela.formModal,
20 8 _parameters : {
21 9 "mustache": "",
22 10 "idContainer": "i3GEOareaContainer",
23   - "namespace": "area"
  11 + "namespace": "area",
  12 + "pontos" : {},
  13 + "ultimoWkt": "",
  14 + "ultimaMedida" : ""
24 15 },
25 16 start : function(){
26 17 var p = this._parameters,
... ... @@ -45,8 +36,9 @@ i3GEOF.area =
45 36 //nao use this aqui
46 37 i3GEOF.area.renderFunction.call();
47 38 i3GEO.analise.pontos = {};
48   - i3GEOF.area.ultimaMedida = "";
  39 + i3GEOF.area._parameters.ultimaMedida = "";
49 40 i3GEOF.area[i3GEO.Interface["ATUAL"]].fechaJanela();
  41 + i3GEOF.area._parameters.pontos = {};
50 42 },
51 43 html:function() {
52 44 var p = this._parameters,
... ... @@ -61,7 +53,7 @@ i3GEOF.area =
61 53 this,
62 54 {
63 55 texto: Mustache.render(p.mustache, hash),
64   - header: "<span class='copyToMemory' onclick='i3GEO.util.copyToClipboard(i3GEOF.area.ultimaMedida);return false;'></span>",
  56 + header: "<span class='copyToMemory' onclick='i3GEO.util.copyToClipboard(i3GEOF.area._parameters.ultimaMedida);return false;'></span>",
65 57 onclose: i3f.destroy
66 58 });
67 59 i3GEO.eventos.cliquePerm.desativa();
... ... @@ -79,7 +71,7 @@ i3GEOF.area =
79 71 * Converte a lista de pontos em WKT
80 72 */
81 73 pontos2wkt : function() {
82   - var pontos = [], x = i3GEOF.area.pontos.xpt, y = i3GEOF.area.pontos.ypt, n = x.length, i;
  74 + var pontos = [], x = i3GEOF.area._parameters.pontos.xpt, y = i3GEOF.area._parameters.pontos.ypt, n = x.length, i;
83 75 for (i = 0; i < n; i++) {
84 76 pontos.push(x[i] + " " + y[i]);
85 77 }
... ... @@ -134,7 +126,7 @@ i3GEOF.area =
134 126 i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature);
135 127 });
136 128 m.draw.on('drawstart', function(evt) {
137   - i3GEOF.area.pontos = {
  129 + i3GEOF.area._parameters.pontos = {
138 130 xpt : [],
139 131 ypt : [],
140 132 dist : []
... ... @@ -171,10 +163,10 @@ i3GEOF.area =
171 163 var temp,sourceProj,coordinates,wgs84Sphere, per, area, n, x1, y1, x2, y2, trecho, direcao,
172 164 coord = point.getCoordinates();
173 165  
174   - n = i3GEOF.area.pontos.ypt.length;
  166 + n = i3GEOF.area._parameters.pontos.ypt.length;
175 167 if (n > 1) {
176   - x1 = i3GEOF.area.pontos.xpt[n - 1];
177   - y1 = i3GEOF.area.pontos.ypt[n - 1];
  168 + x1 = i3GEOF.area._parameters.pontos.xpt[n - 1];
  169 + y1 = i3GEOF.area._parameters.pontos.ypt[n - 1];
178 170 x2 = coord[0];
179 171 y2 = coord[1];
180 172 // projeta
... ... @@ -193,8 +185,8 @@ i3GEOF.area =
193 185 direcao = direcao[0];
194 186 per = i3GEOF.area.openlayers.somaDist();
195 187 // soma ate o primeiro ponto
196   - x1 = i3GEOF.area.pontos.xpt[0];
197   - y1 = i3GEOF.area.pontos.ypt[0];
  188 + x1 = i3GEOF.area._parameters.pontos.xpt[0];
  189 + y1 = i3GEOF.area._parameters.pontos.ypt[0];
198 190 // projeta
199 191 if (i3GEO.Interface.openlayers.googleLike) {
200 192 temp = i3GEO.util.extOSM2Geo(x1 + " " + y1);
... ... @@ -220,14 +212,14 @@ i3GEOF.area =
220 212 var wgs84Sphere,area,coordinates,sourceProj,n, x1, y1, x2, y2, trecho, temp,
221 213 coord = point.getCoordinates(),
222 214 total = 0;
223   - i3GEOF.area.pontos.xpt.push(coord[0]);
224   - i3GEOF.area.pontos.ypt.push(coord[1]);
  215 + i3GEOF.area._parameters.pontos.xpt.push(coord[0]);
  216 + i3GEOF.area._parameters.pontos.ypt.push(coord[1]);
225 217 i3GEO.analise.pontos.xpt.push(coord[0]);
226 218 i3GEO.analise.pontos.ypt.push(coord[1]);
227   - n = i3GEOF.area.pontos.ypt.length;
  219 + n = i3GEOF.area._parameters.pontos.ypt.length;
228 220 if (n > 1) {
229   - x1 = i3GEOF.area.pontos.xpt[n - 2];
230   - y1 = i3GEOF.area.pontos.ypt[n - 2];
  221 + x1 = i3GEOF.area._parameters.pontos.xpt[n - 2];
  222 + y1 = i3GEOF.area._parameters.pontos.ypt[n - 2];
231 223 x2 = coord[0];
232 224 y2 = coord[1];
233 225 raio = new ol.geom.LineString([[x1, y1],[x2, y2]]).getLength();
... ... @@ -241,7 +233,7 @@ i3GEOF.area =
241 233 y2 = temp[3];
242 234 }
243 235 trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
244   - i3GEOF.area.pontos.dist.push(trecho);
  236 + i3GEOF.area._parameters.pontos.dist.push(trecho);
245 237 total = i3GEOF.area.openlayers.somaDist();
246 238  
247 239 sourceProj = i3geoOL.getView().getProjection();
... ... @@ -251,7 +243,7 @@ i3GEOF.area =
251 243 area = Math.abs(wgs84Sphere.geodesicArea(coordinates));
252 244  
253 245 i3GEOF.area.openlayers.mostraTotal(total, area);
254   - i3GEOF.area.ultimoWkt = i3GEOF.area.pontos2wkt();
  246 + i3GEOF.area._parameters.ultimoWkt = i3GEOF.area.pontos2wkt();
255 247 }
256 248 },
257 249 /**
... ... @@ -259,9 +251,9 @@ i3GEOF.area =
259 251 */
260 252 somaDist : function() {
261 253 var n, i, total = 0;
262   - n = i3GEOF.area.pontos.dist.length;
  254 + n = i3GEOF.area._parameters.pontos.dist.length;
263 255 for (i = 0; i < n; i++) {
264   - total += i3GEOF.area.pontos.dist[i];
  256 + total += i3GEOF.area._parameters.pontos.dist[i];
265 257 }
266 258 return total;
267 259 },
... ... @@ -322,7 +314,7 @@ i3GEOF.area =
322 314 + i3GEO.calculo.metododistancia
323 315 + "</div>";
324 316 mostra.innerHTML = texto;
325   - i3GEOF.area.ultimaMedida = $.number((area / 1000000),3,$trad("dec"),$trad("mil")) + " km2";
  317 + i3GEOF.area._parameters.ultimaMedida = $.number((area / 1000000),3,$trad("dec"),$trad("mil")) + " km2";
326 318 }
327 319 },
328 320 /**
... ... @@ -362,7 +354,7 @@ i3GEOF.area =
362 354 * layer para receber os graficos
363 355 */
364 356 inicia : function() {
365   - i3GEOF.area.pontos = {
  357 + i3GEOF.area._parameters.pontos = {
366 358 xpt : [],
367 359 ypt : [],
368 360 dist : []
... ... @@ -403,7 +395,7 @@ i3GEOF.area =
403 395 i3GEO.desenho.googlemaps.shapes.push(pontos.line);
404 396 pontos = null;
405 397 }
406   - i3GEOF.area.ultimoWkt = i3GEOF.area.pontos2wkt();
  398 + i3GEOF.area._parameters.ultimoWkt = i3GEOF.area.pontos2wkt();
407 399 };
408 400 evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) {
409 401 i3GEO.eventos.cliquePerm.desativa();
... ... @@ -413,8 +405,8 @@ i3GEOF.area =
413 405 pontos.mvcLine.push(evt.latLng);
414 406 pontos.xpt.push(evt.latLng.lng());
415 407 pontos.ypt.push(evt.latLng.lat());
416   - i3GEOF.area.pontos.xpt.push(evt.latLng.lng());
417   - i3GEOF.area.pontos.ypt.push(evt.latLng.lat());
  408 + i3GEOF.area._parameters.pontos.xpt.push(evt.latLng.lng());
  409 + i3GEOF.area._parameters.pontos.ypt.push(evt.latLng.lat());
418 410 // desenha um circulo
419 411 if (pontos.mvcLine.getLength() > 0) {
420 412 per = google.maps.geometry.spherical.computeLength(pontos.mvcLine);
... ... @@ -545,7 +537,7 @@ i3GEOF.area =
545 537 + ": "
546 538 + i3GEO.calculo.metododistancia;
547 539 mostra.innerHTML = texto + "<hr>";
548   - i3GEOF.area.ultimaMedida = (area / 1000000).toFixed(3) + " km2";
  540 + i3GEOF.area._parameters.ultimaMedida = (area / 1000000).toFixed(3) + " km2";
549 541 }
550 542 },
551 543 /**
... ...
ferramentas/distancia/index.js
... ... @@ -3,24 +3,14 @@ if (typeof (i3GEOF) === &#39;undefined&#39;) {
3 3 }
4 4 i3GEOF.distancia =
5 5 {
6   - position: [150,0],
7   - /**
8   - * Armazena os pontos clicados para realizar os calculos
9   - */
10   - pontos : {},
11   - /**
12   - * Armazena o WKT da ultima linha
13   - */
14   - ultimoWkt : "",
15   - /**
16   - * Armazena a ultima medida
17   - */
18   - ultimaMedida : "",
  6 + position: [150,0],
19 7 renderFunction: i3GEO.janela.formModal,
20 8 _parameters : {
21 9 "mustache": "",
22 10 "idContainer": "i3GEOdistanciaContainer",
23   - "namespace": "distancia"
  11 + "namespace": "distancia",
  12 + "pontos": {},
  13 + "ultimoWkt": "",
24 14 },
25 15 start : function(){
26 16 var p = this._parameters,
... ... @@ -45,11 +35,12 @@ i3GEOF.distancia =
45 35 //nao use this aqui
46 36 i3GEOF.distancia.renderFunction.call();
47 37 i3GEO.analise.pontos = {
48   - xpt : [],
49   - ypt : []
50   - };
51   - i3GEOF.distancia.ultimaMedida = "";
  38 + xpt : [],
  39 + ypt : []
  40 + };
  41 + i3GEOF.distancia._parameters.ultimaMedida = "";
52 42 i3GEOF.distancia[i3GEO.Interface["ATUAL"]].fechaJanela();
  43 + i3GEOF.distancia._parameters.pontos = {};
53 44 },
54 45 html:function() {
55 46 var p = this._parameters,
... ... @@ -65,576 +56,582 @@ i3GEOF.distancia =
65 56 this,
66 57 {
67 58 texto: Mustache.render(p.mustache, hash),
68   - header: "<span class='copyToMemory' onclick='i3GEO.util.copyToClipboard(i3GEOF.distancia.ultimaMedida);return false;'></span>",
  59 + header: "<span class='copyToMemory' onclick='i3GEO.util.copyToClipboard(i3GEOF.distancia._parameters.ultimaMedida);return false;'></span>",
69 60 onclose: i3f.destroy
70 61 });
71 62 i3GEO.eventos.cliquePerm.desativa();
72 63 i3GEOF.distancia[i3GEO.Interface["ATUAL"]].inicia();
73 64 i3GEO.janela.snackBar({content: $trad("inicia",i3f.dicionario)});
74 65 },
75   - perfil: function (){
76   - var js = i3GEO.configura.locaplic + "/ferramentas/perfil/dependencias.php", temp = function() {
77   - i3GEOF.perfil.iniciaJanelaFlutuante(i3GEO.analise.pontos);
78   - };
79   - i3GEO.util.scriptTag(js, temp, "i3GEOF.perfil_script");
80   - },
81   - isOn : function() {
82   - if($i("i3GEOF.distancia")){
83   - return true;
84   - } else {
85   - return false;
86   - }
87   - },
  66 + perfil: function (){
  67 + var js = i3GEO.configura.locaplic + "/ferramentas/perfil/dependencias.php", temp = function() {
  68 + i3GEOF.perfil.iniciaJanelaFlutuante(i3GEO.analise.pontos);
  69 + };
  70 + i3GEO.util.scriptTag(js, temp, "i3GEOF.perfil_script");
  71 + },
  72 + isOn : function() {
  73 + if($i("i3GEOF.distancia")){
  74 + return true;
  75 + } else {
  76 + return false;
  77 + }
  78 + },
88 79  
89   - /**
90   - * Converte a lista de pontos em WKT
91   - */
92   - pontos2wkt : function() {
93   - var pontos = [], x = i3GEOF.distancia.pontos.xpt, y = i3GEOF.distancia.pontos.ypt, n = x.length, i;
94   - for (i = 0; i < n; i++) {
95   - pontos.push(x[i] + " " + y[i]);
96   - }
97   - return "LINESTRING(" + pontos.join(",") + ")";
98   - },
99   - removeFiguras : function(){
100   - i3GEOF.distancia[i3GEO.Interface["ATUAL"]].removeFiguras();
101   - },
102   - /**
103   - * Funcoes especificas da interface openlayers
104   - */
105   - openlayers : {
106   - draw : "",
107   - estilo: "",
108   - featureListener : null,
109   - //numero de pontos da geometria atual
110   - //utilizado para saber se houve um clique ou nao
111   - numpontos : 0,
112   - removeControle : function() {
113   - i3geoOL.removeInteraction(i3GEOF.distancia.openlayers.draw);
114   - i3GEOF.distancia.openlayers.draw = "";
115   - },
116   - /**
117   - * Inicializa o processo Cria a variavel para guardar os pontos Executa a funcao de inicializacao do desenho, que cria o
118   - * layer para receber os graficos
119   - */
120   - inicia : function() {
121   - i3GEOF.distancia.openlayers.estilo =
122   - new ol.style.Style({
123   - stroke: new ol.style.Stroke({
124   - color: '#ffcc33',
125   - width: 5
126   - }),
127   - fill: new ol.style.Fill({
128   - color: 'rgba(255, 153, 0, 0.8)'
129   - })
130   - });
131   - i3GEO.desenho.estiloPadrao = "normal";
132   - var m = i3GEOF.distancia.openlayers;
133   - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia();
134   - m.removeControle();
135   - m.draw = new ol.interaction.Draw({
136   - type : "LineString"
137   - });
138   - i3GEO.Interface.openlayers.parametrosMap.interactions[0].setActive(false);
139   - m.draw.on("drawend", function(evt) {
140   - evt.feature.setProperties({
141   - origem : "medeDistancia"
142   - });
143   - var m = i3GEOF.distancia.openlayers;
144   - evt.feature.setStyle(
145   - new ol.style.Style({
146   - stroke: new ol.style.Stroke({
147   - color: i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao].linecolor,
148   - width: 5
149   - })
150   - })
151   - );
152   - i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature);
153   - m.draw.setActive(false);
154   - m.draw.setActive(true);
155   - });
156   - m.draw.on('drawstart', function(evt) {
157   - i3GEOF.distancia.pontos = {
158   - xpt : [],
159   - ypt : [],
160   - dist : []
161   - };
162   - //usado no perfil
163   - i3GEO.analise.pontos = {
164   - xpt : [],
165   - ypt : []
166   - };
167   - var m = i3GEOF.distancia.openlayers,
168   - sketch = evt.feature;
169   - m.estilo = sketch.getStyle();
170   - m.numpontos = 1;
171   - m.featureListener = sketch.getGeometry().on('change', function(evt) {
172   - var ponto,
173   - geom = evt.target,
174   - coords = geom.getCoordinates(),
175   - n = coords.length,
176   - m = i3GEOF.distancia.openlayers;
177   - ponto = new ol.geom.Point(coords[n-1]);
178   - if(m.numpontos === n-1){
179   - //clicou
180   - m.numpontos = n;
181   - m.point(ponto);
182   - }
183   - else{
184   - m.modify(ponto);
185   - }
186   - });
187   - });
188   - i3geoOL.addInteraction(m.draw);
189   - },
190   - modify : function(point) {
191   - var temp, n, x1, y1, x2, y2, trecho, parcial, direcao,
192   - coord = point.getCoordinates();
193   - n = i3GEOF.distancia.pontos.ypt.length;
194   - if (n > 0) {
195   - x1 = i3GEOF.distancia.pontos.xpt[n - 1];
196   - y1 = i3GEOF.distancia.pontos.ypt[n - 1];
197   - x2 = coord[0];
198   - y2 = coord[1];
199   - // projeta
200   - if (i3GEO.Interface.openlayers.googleLike) {
201   - temp = i3GEO.util.extOSM2Geo(x1 + " " + y1 + " " + x2 + " " + y2);
202   - temp = temp.split(" ");
203   - x1 = temp[0];
204   - y1 = temp[1];
205   - x2 = temp[2];
206   - y2 = temp[3];
207   - }
208   - //console.info(x1+" "+y1+" "+x2+" "+y2)
209   - trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
210   - parcial = i3GEOF.distancia.openlayers.somaDist();
211   - direcao = i3GEO.calculo.direcao(x1, y1, x2, y2);
212   - direcao = i3GEO.calculo.dd2dms(direcao, direcao);
213   - direcao = direcao[0];
214   - i3GEOF.distancia.openlayers.mostraParcial(trecho, parcial, direcao);
215   - }
216   - },
217   - point : function(point) {
218   - i3GEO.eventos.cliquePerm.desativa();
219   - var n, x1, y1, x2, y2, trecho, temp, circ, label, raio,
220   - estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao],
221   - coord = point.getCoordinates(),
222   - total = 0;
223   - i3GEOF.distancia.pontos.xpt.push(coord[0]);
224   - i3GEOF.distancia.pontos.ypt.push(coord[1]);
225   - i3GEO.analise.pontos.xpt.push(coord[0]);
226   - i3GEO.analise.pontos.ypt.push(coord[1]);
227   - n = i3GEOF.distancia.pontos.ypt.length;
228   - if (n > 1) {
229   - x1 = i3GEOF.distancia.pontos.xpt[n - 2];
230   - y1 = i3GEOF.distancia.pontos.ypt[n - 2];
231   - x2 = coord[0];
232   - y2 = coord[1];
233   - raio = new ol.geom.LineString([[x1, y1],[x2, y2]]).getLength();
234   - // projeta
235   - if (i3GEO.Interface.openlayers.googleLike) {
236   - temp = i3GEO.util.extOSM2Geo(x1 + " " + y1 + " " + x2 + " " + y2);
237   - temp = temp.split(" ");
238   - x1 = temp[0];
239   - y1 = temp[1];
240   - x2 = temp[2];
241   - y2 = temp[3];
242   - }
243   - trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
244   - i3GEOF.distancia.pontos.dist.push(trecho);
245   - total = i3GEOF.distancia.openlayers.somaDist();
246   - i3GEOF.distancia.openlayers.mostraTotal(trecho, total);
247   - i3GEOF.distancia.ultimoWkt = i3GEOF.distancia.pontos2wkt();
248   - // raio
249   - if ($i("pararraios") && $i("pararraios").checked === true) {
  80 + /**
  81 + * Converte a lista de pontos em WKT
  82 + */
  83 + pontos2wkt : function() {
  84 + var pontos = [], x = i3GEOF.distancia._parameters.pontos.xpt, y = i3GEOF.distancia._parameters.pontos.ypt, n = x.length, i;
  85 + for (i = 0; i < n; i++) {
  86 + pontos.push(x[i] + " " + y[i]);
  87 + }
  88 + return "LINESTRING(" + pontos.join(",") + ")";
  89 + },
  90 + removeFiguras : function(){
  91 + i3GEOF.distancia[i3GEO.Interface["ATUAL"]].removeFiguras();
  92 + },
  93 + mostraTotal : function(trecho, total){
  94 + i3GEOF.distancia[i3GEO.Interface["ATUAL"]].mostraTotal(trecho, total);
  95 + },
  96 + mostraParcial : function(trecho, parcial, direcao){
  97 + i3GEOF.distancia[i3GEO.Interface["ATUAL"]].mostraParcial(trecho, parcial, direcao);
  98 + },
  99 + /**
  100 + * Funcoes especificas da interface openlayers
  101 + */
  102 + openlayers : {
  103 + draw : "",
  104 + estilo: "",
  105 + featureListener : null,
  106 + //numero de pontos da geometria atual
  107 + //utilizado para saber se houve um clique ou nao
  108 + numpontos : 0,
  109 + removeControle : function() {
  110 + i3geoOL.removeInteraction(i3GEOF.distancia.openlayers.draw);
  111 + i3GEOF.distancia.openlayers.draw = "";
  112 + },
  113 + /**
  114 + * Inicializa o processo Cria a variavel para guardar os pontos Executa a funcao de inicializacao do desenho, que cria o
  115 + * layer para receber os graficos
  116 + */
  117 + inicia : function() {
  118 + i3GEOF.distancia.openlayers.estilo =
  119 + new ol.style.Style({
  120 + stroke: new ol.style.Stroke({
  121 + color: '#ffcc33',
  122 + width: 5
  123 + }),
  124 + fill: new ol.style.Fill({
  125 + color: 'rgba(255, 153, 0, 0.8)'
  126 + })
  127 + });
  128 + i3GEO.desenho.estiloPadrao = "normal";
  129 + var m = i3GEOF.distancia.openlayers;
  130 + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia();
  131 + m.removeControle();
  132 + m.draw = new ol.interaction.Draw({
  133 + type : "LineString"
  134 + });
  135 + i3GEO.Interface.openlayers.parametrosMap.interactions[0].setActive(false);
  136 + m.draw.on("drawend", function(evt) {
  137 + evt.feature.setProperties({
  138 + origem : "medeDistancia"
  139 + });
  140 + var m = i3GEOF.distancia.openlayers;
  141 + evt.feature.setStyle(
  142 + new ol.style.Style({
  143 + stroke: new ol.style.Stroke({
  144 + color: i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao].linecolor,
  145 + width: 5
  146 + })
  147 + })
  148 + );
  149 + i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature);
  150 + m.draw.setActive(false);
  151 + m.draw.setActive(true);
  152 + });
  153 + m.draw.on('drawstart', function(evt) {
  154 + i3GEOF.distancia._parameters.pontos = {
  155 + xpt : [],
  156 + ypt : [],
  157 + dist : []
  158 + };
  159 + //usado no perfil
  160 + i3GEO.analise.pontos = {
  161 + xpt : [],
  162 + ypt : []
  163 + };
  164 + var m = i3GEOF.distancia.openlayers,
  165 + sketch = evt.feature;
  166 + m.estilo = sketch.getStyle();
  167 + m.numpontos = 1;
  168 + m.featureListener = sketch.getGeometry().on('change', function(evt) {
  169 + var ponto,
  170 + geom = evt.target,
  171 + coords = geom.getCoordinates(),
  172 + n = coords.length,
  173 + m = i3GEOF.distancia.openlayers;
  174 + ponto = new ol.geom.Point(coords[n-1]);
  175 + if(m.numpontos === n-1){
  176 + //clicou
  177 + m.numpontos = n;
  178 + m.point(ponto);
  179 + }
  180 + else{
  181 + m.modify(ponto);
  182 + }
  183 + });
  184 + });
  185 + i3geoOL.addInteraction(m.draw);
  186 + },
  187 + modify : function(point) {
  188 + var temp, n, x1, y1, x2, y2, trecho, parcial, direcao,
  189 + coord = point.getCoordinates();
  190 + n = i3GEOF.distancia._parameters.pontos.ypt.length;
  191 + if (n > 0) {
  192 + x1 = i3GEOF.distancia._parameters.pontos.xpt[n - 1];
  193 + y1 = i3GEOF.distancia._parameters.pontos.ypt[n - 1];
  194 + x2 = coord[0];
  195 + y2 = coord[1];
  196 + // projeta
  197 + if (i3GEO.Interface.openlayers.googleLike) {
  198 + temp = i3GEO.util.extOSM2Geo(x1 + " " + y1 + " " + x2 + " " + y2);
  199 + temp = temp.split(" ");
  200 + x1 = temp[0];
  201 + y1 = temp[1];
  202 + x2 = temp[2];
  203 + y2 = temp[3];
  204 + }
  205 + //console.info(x1+" "+y1+" "+x2+" "+y2)
  206 + trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
  207 + parcial = i3GEOF.distancia.openlayers.somaDist();
  208 + direcao = i3GEO.calculo.direcao(x1, y1, x2, y2);
  209 + direcao = i3GEO.calculo.dd2dms(direcao, direcao);
  210 + direcao = direcao[0];
  211 + i3GEOF.distancia.mostraParcial(trecho, parcial, direcao);
  212 + }
  213 + },
  214 + point : function(point) {
  215 + i3GEO.eventos.cliquePerm.desativa();
  216 + var n, x1, y1, x2, y2, trecho, temp, circ, label, raio,
  217 + estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao],
  218 + coord = point.getCoordinates(),
  219 + total = 0;
  220 + i3GEOF.distancia._parameters.pontos.xpt.push(coord[0]);
  221 + i3GEOF.distancia._parameters.pontos.ypt.push(coord[1]);
  222 + i3GEO.analise.pontos.xpt.push(coord[0]);
  223 + i3GEO.analise.pontos.ypt.push(coord[1]);
  224 + n = i3GEOF.distancia._parameters.pontos.ypt.length;
  225 + if (n > 1) {
  226 + x1 = i3GEOF.distancia._parameters.pontos.xpt[n - 2];
  227 + y1 = i3GEOF.distancia._parameters.pontos.ypt[n - 2];
  228 + x2 = coord[0];
  229 + y2 = coord[1];
  230 + raio = new ol.geom.LineString([[x1, y1],[x2, y2]]).getLength();
  231 + // projeta
  232 + if (i3GEO.Interface.openlayers.googleLike) {
  233 + temp = i3GEO.util.extOSM2Geo(x1 + " " + y1 + " " + x2 + " " + y2);
  234 + temp = temp.split(" ");
  235 + x1 = temp[0];
  236 + y1 = temp[1];
  237 + x2 = temp[2];
  238 + y2 = temp[3];
  239 + }
  240 + trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
  241 + i3GEOF.distancia._parameters.pontos.dist.push(trecho);
  242 + total = i3GEOF.distancia.openlayers.somaDist();
  243 + i3GEOF.distancia.mostraTotal(trecho, total);
  244 + i3GEOF.distancia._parameters.ultimoWkt = i3GEOF.distancia.pontos2wkt();
  245 + // raio
  246 + if ($i("pararraios") && $i("pararraios").checked === true) {
250 247  
251   - temp = i3GEO.util.projGeo2OSM(new ol.geom.Point([x1*1, y1*1]));
252   - circ = new ol.Feature({
253   - geometry: new ol.geom.Circle(temp.getCoordinates(),raio)
254   - });
255   - circ.setProperties({
256   - origem : "medeDistanciaExcluir"
257   - });
  248 + temp = i3GEO.util.projGeo2OSM(new ol.geom.Point([x1*1, y1*1]));
  249 + circ = new ol.Feature({
  250 + geometry: new ol.geom.Circle(temp.getCoordinates(),raio)
  251 + });
  252 + circ.setProperties({
  253 + origem : "medeDistanciaExcluir"
  254 + });
258 255  
259   - circ.setStyle(
260   - new ol.style.Style({
261   - stroke: new ol.style.Stroke({
262   - color: estilo.circcolor,
263   - width: 1
264   - }),
265   - zIndex: 2
266   - })
267   - );
  256 + circ.setStyle(
  257 + new ol.style.Style({
  258 + stroke: new ol.style.Stroke({
  259 + color: estilo.circcolor,
  260 + width: 1
  261 + }),
  262 + zIndex: 2
  263 + })
  264 + );
268 265  
269   - i3GEO.desenho.layergrafico.getSource().addFeature(circ);
270   - }
271   - // desenha ponto
272   - if ($i("parartextos") && $i("parartextos").checked === true) {
273   - label = new ol.Feature({
274   - geometry: i3GEO.util.projGeo2OSM(new ol.geom.Point([x2*1, y2*1]))
275   - });
276   - label.setProperties({
277   - origem : "medeDistanciaExcluir"
278   - });
279   - label.setStyle(
280   - new ol.style.Style({
281   - image: new ol.style.Circle({
282   - radius: 3,
283   - fill: new ol.style.Fill({
284   - color: estilo.circcolor
285   - }),
286   - stroke: new ol.style.Stroke({
287   - color: estilo.circcolor,
288   - width: 1
289   - })
290   - }),
291   - text: new ol.style.Text({
292   - text : $.number(trecho,3,$trad("dec"),$trad("mil")),
293   - font: 'Bold 14px Arial',
294   - textAlign: 'left',
295   - stroke: new ol.style.Stroke({
296   - color: 'white',
297   - width: 1
298   - }),
299   - fill: new ol.style.Fill({
300   - color: estilo.textcolor
301   - }),
302   - zIndex: 2000
303   - })
304   - })
305   - );
306   - i3GEO.desenho.layergrafico.getSource().addFeature(label);
307   - }
308   - }
309   - },
310   - /**
311   - * Soma os valores de distancia guardados em pontos.dist
312   - */
313   - somaDist : function() {
314   - var n, i, total = 0;
315   - n = i3GEOF.distancia.pontos.dist.length;
316   - for (i = 0; i < n; i++) {
317   - total += i3GEOF.distancia.pontos.dist[i];
318   - }
319   - return total;
320   - },
321   - /**
322   - * Fecha a janela que mostra os dados Pergunta ao usuario se os graficos devem ser removidos Os graficos sao marcados com o
323   - * atributo "origem" Os raios e pontos sao sempre removidos
324   - */
325   - fechaJanela : function() {
326   - i3GEO.Interface.openlayers.parametrosMap.interactions[0].setActive(false);
327   - var m = i3GEOF.distancia.openlayers;
328   - ol.Observable.unByKey(m.featureListener);
329   - m.featureListener = null;
330   - m.removeControle();
331   - m.numpontos = 0;
332   - i3GEO.eventos.cliquePerm.ativa();
333   - i3GEOF.distancia.openlayers.removeFiguras();
334   - },
335   - removeFiguras: function(){
336   - var features, n, f, i, remover = [], temp;
337   - features = i3GEO.desenho.layergrafico.getSource().getFeatures();
338   - n = features.length;
339   - for (i = 0; i < n; i++) {
340   - f = features[i];
341   - if (f.getProperties().origem === "medeDistancia" || f.getProperties().origem === "medeDistanciaExcluir") {
342   - remover.push(f);
343   - }
344   - }
345   - if (remover.length > 0) {
346   - temp = window.confirm($trad("x94"));
347   - if (temp) {
348   - for (r in remover) {
349   - i3GEO.desenho.layergrafico.getSource().removeFeature(remover[r]);
350   - }
351   - }
352   - }
353   - },
354   - /**
355   - * Mostra a totalizacao das linhas ja digitalizadas
356   - */
357   - mostraTotal : function(trecho, total) {
358   - var mostra = $i("mostradistancia_calculo"), texto;
359   - if (mostra) {
360   - texto =
361   - "<strong>Total</strong><br>" + $trad("x96")
362   - + " km: "
363   - + $.number(total,3,$trad("dec"),$trad("mil"))
364   - + "<br>"
365   - + $trad("x96")
366   - + " m: "
367   - + $.number((total * 1000),2,$trad("dec"),$trad("mil"))
368   - + "<div class='hidden-sm hidden-xs' >"
369   - + $trad("x25")
370   - + ": "
371   - + i3GEO.calculo.metododistancia
372   - + "</div>";
373   - i3GEOF.distancia.ultimaMedida = $.number(total,3,$trad("dec"),$trad("mil")) + " km";
374   - mostra.innerHTML = texto;
375   - }
376   - },
377   - /**
378   - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
379   - */
380   - mostraParcial : function(trecho, parcial, direcao) {
381   - var mostra = $i("mostradistancia_calculo_movel"), texto;
382   - if (mostra) {
383   - texto =
384   - "<strong>Parcial </strong><br>" + $trad("x95")
385   - + " km: "
386   - + $.number(trecho,3,$trad("dec"),$trad("mil"))
387   - + "<br>"
388   - + $trad("x97")
389   - + " km: "
390   - + $.number((parcial + trecho),3,$trad("dec"),$trad("mil"))
391   - + "<div class='hidden-sm hidden-xs' >"
392   - + $trad("x23")
393   - + " (DMS): "
394   - + direcao
395   - + "</div>";
396   - mostra.innerHTML = texto;
397   - }
398   - }
399   - },
400   - googlemaps : {
401   - /**
402   - * Inicializa o processo Cria a variavel para guardar os pontos Executa a funcao de inicializacao do desenho, que cria o
403   - * layer para receber os graficos
404   - */
405   - inicia : function() {
406   - i3GEOF.distancia.pontos = {
407   - xpt : [],
408   - ypt : [],
409   - dist : []
410   - };
411   - i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia();
412   - i3GeoMap.setOptions({
413   - disableDoubleClickZoom : true
414   - });
415   - i3GeoMap.setOptions({
416   - draggableCursor : 'crosshair'
417   - });
418   - var t, evtdblclick = null, evtclick = null, evtmousemove = null, pontos = {
419   - xpt : [],
420   - ypt : [],
421   - dist : [],
422   - mvcLine : new google.maps.MVCArray(),
423   - mvcMarkers : new google.maps.MVCArray(),
424   - line : null,
425   - polygon : null
426   - }, termina = function() {
427   - google.maps.event.removeListener(evtdblclick);
428   - google.maps.event.removeListener(evtclick);
429   - google.maps.event.removeListener(evtmousemove);
430   - pontos.line.setOptions({
431   - clickable : true
432   - });
433   - google.maps.event.addListener(pontos.line, 'click', function(shape) {
434   - if (shape.setEditable) {
435   - shape.setEditable(!shape.editable);
436   - }
437   - });
438   - i3GEOF.distancia.ultimoWkt = i3GEOF.distancia.pontos2wkt();
439   - t = i3GEOF.distancia.googlemaps.somaDist(pontos);
440   - i3GEOF.distancia.ultimaMedida = t.toFixed(3) + " km";
441   - if (pontos) {
442   - i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine);
443   - i3GEO.desenho.googlemaps.shapes.push(pontos.line);
444   - pontos = null;
445   - }
446   - };
447   - evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) {
448   - i3GEO.eventos.cliquePerm.desativa();
449   - var x1, x2, y1, y2, trecho = 0, total, n;
450   - // When the map is clicked, pass the LatLng obect to the
451   - // measureAdd function
452   - pontos.mvcLine.push(evt.latLng);
453   - pontos.xpt.push(evt.latLng.lng());
454   - pontos.ypt.push(evt.latLng.lat());
455   - i3GEOF.distancia.pontos.xpt.push(evt.latLng.lng());
456   - i3GEOF.distancia.pontos.ypt.push(evt.latLng.lat());
457   - n = pontos.xpt.length;
458   - // desenha um circulo
459   - if (pontos.mvcLine.getLength() > 1) {
460   - x1 = pontos.xpt[n - 2];
461   - y1 = pontos.ypt[n - 2];
462   - x2 = evt.latLng.lng();
463   - y2 = evt.latLng.lat();
464   - // raio =
465   - // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new
466   - // google.maps.LatLng(y1,x1))
467   - trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
468   - pontos.dist.push(trecho);
469   - total = i3GEOF.distancia.googlemaps.somaDist(pontos);
470   - i3GEOF.distancia.googlemaps.mostraTotal(trecho, total);
471   - if ($i("pararraios") && $i("pararraios").checked === true) {
472   - i3GEO.desenho.googlemaps.shapes.push(new google.maps.Circle({
473   - map : i3GeoMap,
474   - fillOpacity : 0,
475   - clickable : false,
476   - strokeColor : "black",
477   - strokeOpacity : 1,
478   - strokeWeight : 2,
479   - center : new google.maps.LatLng(y1, x1),
480   - radius : trecho * 1000,
481   - origem : "medeDistanciaExcluir"
482   - }));
483   - }
484   - }
485   - // desenha uma marca no ponto
486   - if ($i("parartextos") && $i("parartextos").checked === true) {
487   - i3GEO.desenho.googlemaps.shapes.push(new google.maps.Marker({
488   - map : i3GeoMap,
489   - fillOpacity : 0,
490   - clickable : false,
491   - position : evt.latLng,
492   - icon : {
493   - path : google.maps.SymbolPath.CIRCLE,
494   - scale : 2.5,
495   - strokeColor : "#ffffff",
496   - title : trecho.toFixed(0) + " km"
497   - },
498   - origem : "medeDistanciaExcluir"
499   - }));
500   - }
501   - // mais um ponto para criar uma linha movel
502   - pontos.mvcLine.push(evt.latLng);
503   - });
504   - evtmousemove =
505   - google.maps.event.addListener(i3GeoMap, "mousemove", function(evt) {
506   - if (!$i("mostradistancia_calculo")) {
507   - termina.call();
508   - return;
509   - }
510   - var x1, y1, x2, y2, direcao, parcial, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], n =
511   - pontos.xpt.length;
  266 + i3GEO.desenho.layergrafico.getSource().addFeature(circ);
  267 + }
  268 + // desenha ponto
  269 + if ($i("parartextos") && $i("parartextos").checked === true) {
  270 + label = new ol.Feature({
  271 + geometry: i3GEO.util.projGeo2OSM(new ol.geom.Point([x2*1, y2*1]))
  272 + });
  273 + label.setProperties({
  274 + origem : "medeDistanciaExcluir"
  275 + });
  276 + label.setStyle(
  277 + new ol.style.Style({
  278 + image: new ol.style.Circle({
  279 + radius: 3,
  280 + fill: new ol.style.Fill({
  281 + color: estilo.circcolor
  282 + }),
  283 + stroke: new ol.style.Stroke({
  284 + color: estilo.circcolor,
  285 + width: 1
  286 + })
  287 + }),
  288 + text: new ol.style.Text({
  289 + text : $.number(trecho,3,$trad("dec"),$trad("mil")),
  290 + font: 'Bold 14px Arial',
  291 + textAlign: 'left',
  292 + stroke: new ol.style.Stroke({
  293 + color: 'white',
  294 + width: 1
  295 + }),
  296 + fill: new ol.style.Fill({
  297 + color: estilo.textcolor
  298 + }),
  299 + zIndex: 2000
  300 + })
  301 + })
  302 + );
  303 + i3GEO.desenho.layergrafico.getSource().addFeature(label);
  304 + }
  305 + }
  306 + },
  307 + /**
  308 + * Soma os valores de distancia guardados em pontos.dist
  309 + */
  310 + somaDist : function() {
  311 + var n, i, total = 0;
  312 + n = i3GEOF.distancia._parameters.pontos.dist.length;
  313 + for (i = 0; i < n; i++) {
  314 + total += i3GEOF.distancia._parameters.pontos.dist[i];
  315 + }
  316 + return total;
  317 + },
  318 + /**
  319 + * Fecha a janela que mostra os dados Pergunta ao usuario se os graficos devem ser removidos Os graficos sao marcados com o
  320 + * atributo "origem" Os raios e pontos sao sempre removidos
  321 + */
  322 + fechaJanela : function() {
  323 + i3GEO.Interface.openlayers.parametrosMap.interactions[0].setActive(false);
  324 + var m = i3GEOF.distancia.openlayers;
  325 + ol.Observable.unByKey(m.featureListener);
  326 + m.featureListener = null;
  327 + m.removeControle();
  328 + m.numpontos = 0;
  329 + i3GEO.eventos.cliquePerm.ativa();
  330 + i3GEOF.distancia.openlayers.removeFiguras();
  331 + },
  332 + removeFiguras: function(){
  333 + var features, n, f, i, remover = [], temp;
  334 + features = i3GEO.desenho.layergrafico.getSource().getFeatures();
  335 + n = features.length;
  336 + for (i = 0; i < n; i++) {
  337 + f = features[i];
  338 + if (f.getProperties().origem === "medeDistancia" || f.getProperties().origem === "medeDistanciaExcluir") {
  339 + remover.push(f);
  340 + }
  341 + }
  342 + if (remover.length > 0) {
  343 + temp = window.confirm($trad("x94"));
  344 + if (temp) {
  345 + for (r in remover) {
  346 + i3GEO.desenho.layergrafico.getSource().removeFeature(remover[r]);
  347 + }
  348 + }
  349 + }
  350 + },
  351 + /**
  352 + * Mostra a totalizacao das linhas ja digitalizadas
  353 + */
  354 + mostraTotal : function(trecho, total) {
  355 + var mostra = $i("mostradistancia_calculo"), texto;
  356 + if (mostra) {
  357 + texto =
  358 + "<strong>Total</strong><br>" + $trad("x96")
  359 + + " km: "
  360 + + $.number(total,3,$trad("dec"),$trad("mil"))
  361 + + "<br>"
  362 + + $trad("x96")
  363 + + " m: "
  364 + + $.number((total * 1000),2,$trad("dec"),$trad("mil"))
  365 + + "<div class='hidden-sm hidden-xs' >"
  366 + + $trad("x25")
  367 + + ": "
  368 + + i3GEO.calculo.metododistancia
  369 + + "</div>";
  370 + i3GEOF.distancia._parameters.ultimaMedida = $.number(total,3,$trad("dec"),$trad("mil")) + " km";
  371 + mostra.innerHTML = texto;
  372 + }
  373 + },
  374 + /**
  375 + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
  376 + */
  377 + mostraParcial : function(trecho, parcial, direcao) {
  378 + var mostra = $i("mostradistancia_calculo_movel"), texto;
  379 + if (mostra) {
  380 + texto =
  381 + "<strong>Parcial </strong><br>" + $trad("x95")
  382 + + " km: "
  383 + + $.number(trecho,3,$trad("dec"),$trad("mil"))
  384 + + "<br>"
  385 + + $trad("x97")
  386 + + " km: "
  387 + + $.number((parcial + trecho),3,$trad("dec"),$trad("mil"))
  388 + + "<div class='hidden-sm hidden-xs' >"
  389 + + $trad("x23")
  390 + + " (DMS): "
  391 + + direcao
  392 + + "</div>";
  393 + mostra.innerHTML = texto;
  394 + }
  395 + }
  396 + },
  397 + googlemaps : {
  398 + /**
  399 + * Inicializa o processo Cria a variavel para guardar os pontos Executa a funcao de inicializacao do desenho, que cria o
  400 + * layer para receber os graficos
  401 + */
  402 + inicia : function() {
  403 + i3GEOF.distancia._parameters.pontos = {
  404 + xpt : [],
  405 + ypt : [],
  406 + dist : []
  407 + };
  408 + i3GEO.desenho[i3GEO.Interface["ATUAL"]].inicia();
  409 + i3GeoMap.setOptions({
  410 + disableDoubleClickZoom : true
  411 + });
  412 + i3GeoMap.setOptions({
  413 + draggableCursor : 'crosshair'
  414 + });
  415 + var t, evtdblclick = null, evtclick = null, evtmousemove = null, pontos = {
  416 + xpt : [],
  417 + ypt : [],
  418 + dist : [],
  419 + mvcLine : new google.maps.MVCArray(),
  420 + mvcMarkers : new google.maps.MVCArray(),
  421 + line : null,
  422 + polygon : null
  423 + }, termina = function() {
  424 + google.maps.event.removeListener(evtdblclick);
  425 + google.maps.event.removeListener(evtclick);
  426 + google.maps.event.removeListener(evtmousemove);
  427 + pontos.line.setOptions({
  428 + clickable : true
  429 + });
  430 + google.maps.event.addListener(pontos.line, 'click', function(shape) {
  431 + if (shape.setEditable) {
  432 + shape.setEditable(!shape.editable);
  433 + }
  434 + });
  435 + i3GEOF.distancia._parameters.ultimoWkt = i3GEOF.distancia.pontos2wkt();
  436 + t = i3GEOF.distancia.googlemaps.somaDist(pontos);
  437 + i3GEOF.distancia._parameters.ultimaMedida = t.toFixed(3) + " km";
  438 + if (pontos) {
  439 + i3GEO.desenho.googlemaps.shapes.push(pontos.mvcLine);
  440 + i3GEO.desenho.googlemaps.shapes.push(pontos.line);
  441 + pontos = null;
  442 + }
  443 + };
  444 + evtclick = google.maps.event.addListener(i3GeoMap, "click", function(evt) {
  445 + i3GEO.eventos.cliquePerm.desativa();
  446 + var x1, x2, y1, y2, trecho = 0, total, n;
  447 + // When the map is clicked, pass the LatLng obect to the
  448 + // measureAdd function
  449 + pontos.mvcLine.push(evt.latLng);
  450 + pontos.xpt.push(evt.latLng.lng());
  451 + pontos.ypt.push(evt.latLng.lat());
  452 + i3GEOF.distancia._parameters.pontos.xpt.push(evt.latLng.lng());
  453 + i3GEOF.distancia._parameters.pontos.ypt.push(evt.latLng.lat());
  454 + n = pontos.xpt.length;
  455 + // desenha um circulo
  456 + if (pontos.mvcLine.getLength() > 1) {
  457 + x1 = pontos.xpt[n - 2];
  458 + y1 = pontos.ypt[n - 2];
  459 + x2 = evt.latLng.lng();
  460 + y2 = evt.latLng.lat();
  461 + // raio =
  462 + // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new
  463 + // google.maps.LatLng(y1,x1))
  464 + trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
  465 + pontos.dist.push(trecho);
  466 + total = i3GEOF.distancia.googlemaps.somaDist(pontos);
  467 + i3GEOF.distancia.mostraTotal(trecho, total);
  468 + if ($i("pararraios") && $i("pararraios").checked === true) {
  469 + i3GEO.desenho.googlemaps.shapes.push(new google.maps.Circle({
  470 + map : i3GeoMap,
  471 + fillOpacity : 0,
  472 + clickable : false,
  473 + strokeColor : "black",
  474 + strokeOpacity : 1,
  475 + strokeWeight : 2,
  476 + center : new google.maps.LatLng(y1, x1),
  477 + radius : trecho * 1000,
  478 + origem : "medeDistanciaExcluir"
  479 + }));
  480 + }
  481 + }
  482 + // desenha uma marca no ponto
  483 + if ($i("parartextos") && $i("parartextos").checked === true) {
  484 + i3GEO.desenho.googlemaps.shapes.push(new google.maps.Marker({
  485 + map : i3GeoMap,
  486 + fillOpacity : 0,
  487 + clickable : false,
  488 + position : evt.latLng,
  489 + icon : {
  490 + path : google.maps.SymbolPath.CIRCLE,
  491 + scale : 2.5,
  492 + strokeColor : "#ffffff",
  493 + title : trecho.toFixed(0) + " km"
  494 + },
  495 + origem : "medeDistanciaExcluir"
  496 + }));
  497 + }
  498 + // mais um ponto para criar uma linha movel
  499 + pontos.mvcLine.push(evt.latLng);
  500 + });
  501 + evtmousemove =
  502 + google.maps.event.addListener(i3GeoMap, "mousemove", function(evt) {
  503 + if (!$i("mostradistancia_calculo")) {
  504 + termina.call();
  505 + return;
  506 + }
  507 + var x1, y1, x2, y2, direcao, parcial, estilo = i3GEO.desenho.estilos[i3GEO.desenho.estiloPadrao], n =
  508 + pontos.xpt.length;
512 509  
513   - // If there is more than one vertex on the line
514   - if (pontos.mvcLine.getLength() > 0) {
515   - // If the line hasn't been created yet
516   - if (!pontos.line) {
517   - // Create the line (google.maps.Polyline)
518   - pontos.line = new google.maps.Polyline({
519   - map : i3GeoMap,
520   - clickable : false,
521   - strokeColor : estilo.linecolor,
522   - strokeOpacity : 1,
523   - strokeWeight : estilo.linewidth,
524   - path : pontos.mvcLine,
525   - origem : "medeDistancia"
526   - });
527   - }
528   - pontos.mvcLine.pop();
529   - pontos.mvcLine.push(evt.latLng);
530   - parcial = i3GEOF.distancia.googlemaps.somaDist(pontos);
531   - x1 = pontos.xpt[n - 1];
532   - y1 = pontos.ypt[n - 1];
533   - x2 = evt.latLng.lng();
534   - y2 = evt.latLng.lat();
535   - // raio =
536   - // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new
537   - // google.maps.LatLng(y1,x1))
538   - trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
539   - direcao = i3GEO.calculo.direcao(x1, y1, x2, y2);
540   - direcao = i3GEO.calculo.dd2dms(direcao, direcao);
541   - direcao = direcao[0];
542   - i3GEOF.distancia.googlemaps.mostraParcial(trecho, parcial, direcao);
543   - }
544   - });
545   - evtdblclick = google.maps.event.addListener(i3GeoMap, "dblclick", function(evt) {
546   - termina.call();
547   - });
548   - },
549   - /**
550   - * Soma os valores de distancia guardados em pontos.dist
551   - */
552   - somaDist : function(pontos) {
553   - var n, i, total = 0;
554   - n = pontos.dist.length;
555   - for (i = 0; i < n; i++) {
556   - total += pontos.dist[i];
557   - }
558   - return total;
559   - },
560   - /**
561   - * Fecha a janela que mostra os dados Pergunta ao usuario se os graficos devem ser removidos Os graficos sao marcados com o
562   - * atributo "origem" Os raios e pontos sao sempre removidos
563   - */
564   - fechaJanela : function() {
565   - i3GeoMap.setOptions({
566   - disableDoubleClickZoom : false
567   - });
568   - i3GeoMap.setOptions({
569   - draggableCursor : undefined
570   - });
571   - i3GEOF.distancia.googlemaps.removeFiguras();
572   - },
573   - removeFiguras: function(){
574   - var f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem", "medeDistancia");
575   - if (f && f.length > 0) {
576   - temp = window.confirm($trad("x94"));
577   - if (temp) {
578   - i3GEO.desenho.googlemaps.destroyFeatures(f);
579   - }
580   - }
581   - f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem", "medeDistanciaExcluir");
582   - if (f && f.length > 0) {
583   - i3GEO.desenho.googlemaps.destroyFeatures(f);
584   - }
585   - },
586   - /**
587   - * Mostra a totalizacao das linhas ja digitalizadas
588   - */
589   - mostraTotal : function(trecho, total) {
590   - var mostra = $i("mostradistancia_calculo"), texto;
591   - if (mostra) {
592   - texto =
593   - "<b>" + $trad("x96")
594   - + ":</b> "
595   - + total.toFixed(3)
596   - + " km"
597   - + "<br><b>"
598   - + $trad("x96")
599   - + ":</b> "
600   - + (total * 1000).toFixed(2)
601   - + " m"
602   - + "<br>"
603   - + $trad("x25")
604   - + ": "
605   - + i3GEO.calculo.metododistancia;
606   - mostra.innerHTML = texto;
607   - }
608   - },
609   - /**
610   - * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
611   - */
612   - mostraParcial : function(trecho, parcial, direcao) {
613   - var mostra = $i("mostradistancia_calculo_movel"), texto;
614   - if (mostra) {
615   - texto =
616   - "<b>" + $trad("x95")
617   - + ":</b> "
618   - + trecho.toFixed(3)
619   - + " km"
620   - + "<br><b>"
621   - + $trad("x97")
622   - + ":</b> "
623   - + (parcial + trecho).toFixed(3)
624   - + " km"
625   - + "<br><b>"
626   - + $trad("x23")
627   - + " (DMS):</b> "
628   - + direcao;
629   - mostra.innerHTML = texto;
630   - }
631   - }
632   - }
  510 + // If there is more than one vertex on the line
  511 + if (pontos.mvcLine.getLength() > 0) {
  512 + // If the line hasn't been created yet
  513 + if (!pontos.line) {
  514 + // Create the line (google.maps.Polyline)
  515 + pontos.line = new google.maps.Polyline({
  516 + map : i3GeoMap,
  517 + clickable : false,
  518 + strokeColor : estilo.linecolor,
  519 + strokeOpacity : 1,
  520 + strokeWeight : estilo.linewidth,
  521 + path : pontos.mvcLine,
  522 + origem : "medeDistancia"
  523 + });
  524 + }
  525 + pontos.mvcLine.pop();
  526 + pontos.mvcLine.push(evt.latLng);
  527 + parcial = i3GEOF.distancia.googlemaps.somaDist(pontos);
  528 + x1 = pontos.xpt[n - 1];
  529 + y1 = pontos.ypt[n - 1];
  530 + x2 = evt.latLng.lng();
  531 + y2 = evt.latLng.lat();
  532 + // raio =
  533 + // google.maps.geometry.spherical.computeDistanceBetween(evt.latLng,new
  534 + // google.maps.LatLng(y1,x1))
  535 + trecho = i3GEO.calculo.distancia(x1, y1, x2, y2);
  536 + direcao = i3GEO.calculo.direcao(x1, y1, x2, y2);
  537 + direcao = i3GEO.calculo.dd2dms(direcao, direcao);
  538 + direcao = direcao[0];
  539 + i3GEOF.distancia.mostraParcial(trecho, parcial, direcao);
  540 + }
  541 + });
  542 + evtdblclick = google.maps.event.addListener(i3GeoMap, "dblclick", function(evt) {
  543 + termina.call();
  544 + });
  545 + },
  546 + /**
  547 + * Soma os valores de distancia guardados em pontos.dist
  548 + */
  549 + somaDist : function(pontos) {
  550 + var n, i, total = 0;
  551 + n = pontos.dist.length;
  552 + for (i = 0; i < n; i++) {
  553 + total += pontos.dist[i];
  554 + }
  555 + return total;
  556 + },
  557 + /**
  558 + * Fecha a janela que mostra os dados Pergunta ao usuario se os graficos devem ser removidos Os graficos sao marcados com o
  559 + * atributo "origem" Os raios e pontos sao sempre removidos
  560 + */
  561 + fechaJanela : function() {
  562 + i3GeoMap.setOptions({
  563 + disableDoubleClickZoom : false
  564 + });
  565 + i3GeoMap.setOptions({
  566 + draggableCursor : undefined
  567 + });
  568 + i3GEOF.distancia.googlemaps.removeFiguras();
  569 + },
  570 + removeFiguras: function(){
  571 + var f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem", "medeDistancia");
  572 + if (f && f.length > 0) {
  573 + temp = window.confirm($trad("x94"));
  574 + if (temp) {
  575 + i3GEO.desenho.googlemaps.destroyFeatures(f);
  576 + }
  577 + }
  578 + f = i3GEO.desenho.googlemaps.getFeaturesByAttribute("origem", "medeDistanciaExcluir");
  579 + if (f && f.length > 0) {
  580 + i3GEO.desenho.googlemaps.destroyFeatures(f);
  581 + }
  582 + },
  583 + /**
  584 + * Mostra a totalizacao das linhas ja digitalizadas
  585 + */
  586 + mostraTotal : function(trecho, total) {
  587 + var mostra = $i("mostradistancia_calculo"), texto;
  588 + if (mostra) {
  589 + texto =
  590 + "<b>" + $trad("x96")
  591 + + ":</b> "
  592 + + total.toFixed(3)
  593 + + " km"
  594 + + "<br><b>"
  595 + + $trad("x96")
  596 + + ":</b> "
  597 + + (total * 1000).toFixed(2)
  598 + + " m"
  599 + + "<br>"
  600 + + $trad("x25")
  601 + + ": "
  602 + + i3GEO.calculo.metododistancia;
  603 + mostra.innerHTML = texto;
  604 + }
  605 + },
  606 + /**
  607 + * Mostra o valor do trecho entre o ultimo ponto clicado e a posicao do mouse
  608 + */
  609 + mostraParcial : function(trecho, parcial, direcao) {
  610 + var mostra = $i("mostradistancia_calculo_movel"), texto;
  611 + if (mostra) {
  612 + texto =
  613 + "<b>" + $trad("x95")
  614 + + ":</b> "
  615 + + trecho.toFixed(3)
  616 + + " km"
  617 + + "<br><b>"
  618 + + $trad("x97")
  619 + + ":</b> "
  620 + + (parcial + trecho).toFixed(3)
  621 + + " km"
  622 + + "<br><b>"
  623 + + $trad("x23")
  624 + + " (DMS):</b> "
  625 + + direcao;
  626 + mostra.innerHTML = texto;
  627 + }
  628 + }
  629 + }
633 630 };
634 631 //aplica ao codigo i3GEOF definicoes feitas na interface do mapa
635 632 //isso permite a substituicao de funcoes e parametros
636 633 if(i3GEO.configura.ferramentas.hasOwnProperty("distancia")){
637   -jQuery.each( i3GEO.configura.ferramentas.distancia, function(index, value) {
638   - i3GEOF.distancia[index] = i3GEO.configura.ferramentas.distancia[index];
639   -});
  634 + jQuery.each( i3GEO.configura.ferramentas.distancia, function(index, value) {
  635 + i3GEOF.distancia[index] = i3GEO.configura.ferramentas.distancia[index];
  636 + });
640 637 }
641 638 \ No newline at end of file
... ...
interface/openlayersdebug.php
... ... @@ -3,14 +3,14 @@
3 3 <head>
4 4 <?php
5 5 $configInc = array(
6   - "debug" => "naocompacto", //posfixos inserido na carga do script do i3geo
  6 + "debug" => "naocompacto", // posfixos inserido na carga do script do i3geo
7 7 "tipo" => "OL", // OL ou OSM
8   - "inc" => "inc", //caminho para os includes PHP com os componentes da interface
9   - "pathjs" => "..", //caminho para o include dos arquivos JS
10   - "pathcss" => "..", //caminho para o include dos arquivos css
11   - "pathconfig" => ".", //caminho para o include do arquivo JS config.php
12   - "pathtutorial" => ".", //caminho para o include do arquivo JS tutorial.js
13   - "pathtemplates" => "templates", //caminho para a pasta template com os arquivos MUSTACHE
  8 + "inc" => "inc", // caminho para os includes PHP com os componentes da interface
  9 + "pathjs" => "..", // caminho para o include dos arquivos JS
  10 + "pathcss" => "..", // caminho para o include dos arquivos css
  11 + "pathconfig" => ".", // caminho para o include do arquivo JS config.php
  12 + "pathtutorial" => ".", // caminho para o include do arquivo JS tutorial.js
  13 + "pathtemplates" => "templates", // caminho para a pasta template com os arquivos MUSTACHE
14 14 "nocache" => time()
15 15 );
16 16 include ($configInc["inc"] . "/meta.php");
... ... @@ -66,7 +66,7 @@ include ($configInc[&quot;inc&quot;] . &quot;/css.php&quot;);
66 66 include ($configInc["inc"] . "/iconecatalogo.php");
67 67 include ($configInc["inc"] . "/iconelegenda.php");
68 68 include ($configInc["inc"] . "/iconebusca.php");
69   - //include ($configInc["inc"] . "/iconeinfo.php");
  69 + // include ($configInc["inc"] . "/iconeinfo.php");
70 70 include ($configInc["inc"] . "/iconetutorial.php");
71 71 ?>
72 72 </div>
... ...