Commit 0db9cf86a0edac6c09b006fc0b1c4f1b648759c7

Authored by Edmar Moretti
1 parent 28a0d4a2

Desenvolvimento do heatmap. Sincronização da árvore de temas e árvore de camadas (checkbox)

admin/admin.db
No preview for this file type
classesjs/classe_arvoredecamadas.js
@@ -1201,6 +1201,18 @@ i3GEO.arvoreDeCamadas = { @@ -1201,6 +1201,18 @@ i3GEO.arvoreDeCamadas = {
1201 // camadas", "i3geo"); 1201 // camadas", "i3geo");
1202 var tnome, idtema = node.data.idopcoes, ltema = i3GEO.arvoreDeCamadas 1202 var tnome, idtema = node.data.idopcoes, ltema = i3GEO.arvoreDeCamadas
1203 .pegaTema(idtema), funcoes = i3GEO.arvoreDeCamadas.FUNCOES; 1203 .pegaTema(idtema), funcoes = i3GEO.arvoreDeCamadas.FUNCOES;
  1204 +
  1205 +
  1206 + //
  1207 + //ajusta as propriedades e funcoes caso a camada seja um plugin
  1208 + //
  1209 + ltema = i3GEO.pluginI3geo.aplicaPropriedades(ltema);
  1210 + //inclui no objeto o parametro de verificacao
  1211 + //e necessario clonar para nao alterar o original
  1212 + funcoes = i3GEO.util.cloneObj(funcoes);
  1213 + funcoes.plugini3geo = ltema.plugini3geo;
  1214 + funcoes = i3GEO.pluginI3geo.aplicaPropriedades(funcoes);
  1215 +
1204 if (funcoes.opacidade === true) { 1216 if (funcoes.opacidade === true) {
1205 tnome = "<span onmouseover=\"javascript:i3GEO.ajuda.mostraJanela('" 1217 tnome = "<span onmouseover=\"javascript:i3GEO.ajuda.mostraJanela('"
1206 + $trad("t19") 1218 + $trad("t19")
@@ -1635,6 +1647,13 @@ i3GEO.arvoreDeCamadas = { @@ -1635,6 +1647,13 @@ i3GEO.arvoreDeCamadas = {
1635 html += "&nbsp;<img style='" + estilo + "' src='" + tema.iconetema 1647 html += "&nbsp;<img style='" + estilo + "' src='" + tema.iconetema
1636 + "' />"; 1648 + "' />";
1637 } 1649 }
  1650 + tema.AGUARDALEGENDA = i3GEO.arvoreDeCamadas.AGUARDALEGENDA;
  1651 + //
  1652 + //ajusta as propriedades conforme as caracteristicas de cada plugin
  1653 + //verifica se o tema e do tipo plugin antes
  1654 + //nao e necessario clonar
  1655 + //
  1656 + tema = i3GEO.pluginI3geo.aplicaPropriedades(tema);
1638 // 1657 //
1639 // inclui icone indicando que o tema muda conforme a escala 1658 // inclui icone indicando que o tema muda conforme a escala
1640 // 1659 //
@@ -1702,7 +1721,7 @@ i3GEO.arvoreDeCamadas = { @@ -1702,7 +1721,7 @@ i3GEO.arvoreDeCamadas = {
1702 } 1721 }
1703 estilo = navm ? "cursor:move;vertical-align:35%;padding-top:0px;color:black;" 1722 estilo = navm ? "cursor:move;vertical-align:35%;padding-top:0px;color:black;"
1704 : "cursor:move;vertical-align:20%;color:black;"; 1723 : "cursor:move;vertical-align:20%;color:black;";
1705 - if (i3GEO.arvoreDeCamadas.AGUARDALEGENDA) { 1724 + if (tema.AGUARDALEGENDA) {
1706 html += "&nbsp;<span id='ArvoreTituloTema" 1725 html += "&nbsp;<span id='ArvoreTituloTema"
1707 + tema.name 1726 + tema.name
1708 + "' style='position:relative;top:2px;" 1727 + "' style='position:relative;top:2px;"
classesjs/classe_arvoredetemas.js
@@ -2134,9 +2134,9 @@ i3GEO.arvoreDeTemas = { @@ -2134,9 +2134,9 @@ i3GEO.arvoreDeTemas = {
2134 /** 2134 /**
2135 * Function: desativaCheckbox 2135 * Function: desativaCheckbox
2136 * 2136 *
2137 - * Desmarca todos os checkbox dos temas marcados na arvore. 2137 + * Desmarca todos os checkbox dos temas marcados na arvore
2138 */ 2138 */
2139 - desativaCheckbox : function() { 2139 + desativaCheckbox : function(valor) {
2140 if (typeof (console) !== 'undefined') 2140 if (typeof (console) !== 'undefined')
2141 console.info("i3GEO.arvoreDeTemas.desativaCheckbox()"); 2141 console.info("i3GEO.arvoreDeTemas.desativaCheckbox()");
2142 2142
@@ -2151,6 +2151,26 @@ i3GEO.arvoreDeTemas = { @@ -2151,6 +2151,26 @@ i3GEO.arvoreDeTemas = {
2151 } while (i < n); 2151 } while (i < n);
2152 }, 2152 },
2153 /** 2153 /**
  2154 + * Function: buscaCheckbox
  2155 + *
  2156 + * Retorna um input com determinado value
  2157 + */
  2158 + buscaCheckbox : function(valor) {
  2159 + var o, inputs, n, i;
  2160 + o = document.getElementById(i3GEO.arvoreDeTemas.ARVORE.id);
  2161 + if(o){
  2162 + inputs = o.getElementsByTagName("input");
  2163 + n = inputs.length;
  2164 + i = 0;
  2165 + do {
  2166 + if(inputs[i].value === valor){
  2167 + return inputs[i];
  2168 + }
  2169 + i += 1;
  2170 + } while (i < n);
  2171 + }
  2172 + },
  2173 + /**
2154 * Lista os temas com checkbox marcados. 2174 * Lista os temas com checkbox marcados.
2155 * 2175 *
2156 * Return: {Array} - array com os codigos dos temas 2176 * Return: {Array} - array com os codigos dos temas
classesjs/classe_interface.js
@@ -361,6 +361,13 @@ i3GEO.Interface = { @@ -361,6 +361,13 @@ i3GEO.Interface = {
361 */ 361 */
362 ligaDesliga : function(obj) { 362 ligaDesliga : function(obj) {
363 i3GEO.Interface[i3GEO.Interface.ATUAL].ligaDesliga(obj); 363 i3GEO.Interface[i3GEO.Interface.ATUAL].ligaDesliga(obj);
  364 + //atualiza a arvore de temas se for o caso
  365 + if(obj.value && obj.value != ""){
  366 + var ck = i3GEO.arvoreDeTemas.buscaCheckbox(obj.value);
  367 + if(ck){
  368 + ck.checked = obj.checked;
  369 + }
  370 + }
364 }, 371 },
365 /* 372 /*
366 * Function: adicionaKml 373 * Function: adicionaKml
@@ -1396,14 +1403,8 @@ i3GEO.Interface = { @@ -1396,14 +1403,8 @@ i3GEO.Interface = {
1396 var layers = i3geoOL.getLayersByName(obj.value), desligar = "", ligar = "", b; 1403 var layers = i3geoOL.getLayersByName(obj.value), desligar = "", ligar = "", b;
1397 if (layers.length > 0) { 1404 if (layers.length > 0) {
1398 layers[0].setVisibility(obj.checked); 1405 layers[0].setVisibility(obj.checked);
1399 - if (obj.checked == true) {  
1400 - // foi necess�rio por causa de um bug no Firefox 27.0.1  
1401 - /*  
1402 - * @TODO verificar se persiste o erro nas versoes do FF  
1403 - */  
1404 - if (navn) {  
1405 - i3GEO.Interface.openlayers.atualizaTema("", obj.value);  
1406 - } 1406 + if(obj.checked === true){
  1407 + layers[0].div.style.display = "block";
1407 } 1408 }
1408 } 1409 }
1409 if (obj.checked) { 1410 if (obj.checked) {
@@ -2582,7 +2583,7 @@ i3GEO.Interface = { @@ -2582,7 +2583,7 @@ i3GEO.Interface = {
2582 */ 2583 */
2583 PARAMETROSLAYER : "&TIPOIMAGEM=" + i3GEO.configura.tipoimagem, 2584 PARAMETROSLAYER : "&TIPOIMAGEM=" + i3GEO.configura.tipoimagem,
2584 /* 2585 /*
2585 - * String acrescentada url de cada tile para garantir a 2586 + * String acrescentada a url de cada tile para garantir a
2586 * remo&ccedil;&atilde;o do cache local 2587 * remo&ccedil;&atilde;o do cache local
2587 * 2588 *
2588 * Type: {string} 2589 * Type: {string}
classesjs/classe_plugini3geo.js
1 /** 1 /**
2 * Title: pluginI3geo 2 * Title: pluginI3geo
3 - * 3 + *
4 * i3GEO.pluginI3geo 4 * i3GEO.pluginI3geo
5 - * 5 + *
6 * Implementam os plugins do i3Geo que adicionam camadas especiais ao mapa, 6 * Implementam os plugins do i3Geo que adicionam camadas especiais ao mapa,
7 * normalmente dados vetoriais. 7 * normalmente dados vetoriais.
8 - * 8 + *
9 * Arquivo: 9 * Arquivo:
10 - * 10 + *
11 * i3geo/classesjs/classe_plugini3geo.js 11 * i3geo/classesjs/classe_plugini3geo.js
12 - * 12 + *
13 * Licen&ccedil;a: 13 * Licen&ccedil;a:
14 - * 14 + *
15 * GPL2 15 * GPL2
16 - * 16 + *
17 * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet 17 * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
18 - * 18 + *
19 * Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente 19 * Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente
20 * Brasil Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com 20 * Brasil Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
21 - * 21 + *
22 * Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo 22 * Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
23 * e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral 23 * e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
24 * GNU conforme publicada pela Free Software Foundation; 24 * GNU conforme publicada pela Free Software Foundation;
25 - * 25 + *
26 * Este programa &eacute; distribu&iacute;do na expectativa de que seja 26 * Este programa &eacute; distribu&iacute;do na expectativa de que seja
27 * &uacute;til, por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia 27 * &uacute;til, por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia
28 * impl&iacute;cita de COMERCIABILIDADE OU ADEQUAC&Atilde;O A UMA FINALIDADE 28 * impl&iacute;cita de COMERCIABILIDADE OU ADEQUAC&Atilde;O A UMA FINALIDADE
@@ -32,20 +32,19 @@ @@ -32,20 +32,19 @@
32 * n&atilde;o, escreva para a Free Software Foundation, Inc., no endere&ccedil;o 32 * n&atilde;o, escreva para a Free Software Foundation, Inc., no endere&ccedil;o
33 * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. 33 * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
34 */ 34 */
35 -  
36 if (typeof (i3GEO) === 'undefined') { 35 if (typeof (i3GEO) === 'undefined') {
37 var i3GEO = {}; 36 var i3GEO = {};
38 } 37 }
39 i3GEO.pluginI3geo = { 38 i3GEO.pluginI3geo = {
40 /** 39 /**
41 * Inicia a execucao de um plugin 40 * Inicia a execucao de um plugin
42 - * 41 + *
43 * Camada e um objeto gerado pelo i3Geo quando uma camada e adicionada 42 * Camada e um objeto gerado pelo i3Geo quando uma camada e adicionada
44 * ao mapa O objeto i3GEO.arvoreDeCamadas.CAMADAS guarda todas as 43 * ao mapa O objeto i3GEO.arvoreDeCamadas.CAMADAS guarda todas as
45 * camadas adicionadas ao mapa Ao adicionar uma camada pelo catalogo, o 44 * camadas adicionadas ao mapa Ao adicionar uma camada pelo catalogo, o
46 * i3Geo verifica se a camada possui plugin e direciona para ca Os 45 * i3Geo verifica se a camada possui plugin e direciona para ca Os
47 * plugins sao definidos como metadados em cada mapfile de cada tema 46 * plugins sao definidos como metadados em cada mapfile de cada tema
48 - * 47 + *
49 * Veja em i3geo/classesphp/classe_mapa.php funcao parametrostemas 48 * Veja em i3geo/classesphp/classe_mapa.php funcao parametrostemas
50 */ 49 */
51 inicia : function(camada) { 50 inicia : function(camada) {
@@ -56,131 +55,175 @@ i3GEO.pluginI3geo = { @@ -56,131 +55,175 @@ i3GEO.pluginI3geo = {
56 // para cada plugin deve haver um objeto com as funcoes especificas 55 // para cada plugin deve haver um objeto com as funcoes especificas
57 // para 56 // para
58 // cada interface 57 // cada interface
59 - i3GEO.pluginI3geo[camada.plugini3geo.plugin][i3GEO.Interface.ATUAL]  
60 - .call(null, camada); 58 + i3GEO.pluginI3geo[camada.plugini3geo.plugin][i3GEO.Interface.ATUAL].inicia(camada);
  59 + },
  60 + /**
  61 + * Aplica as propriedades em um objeto do tipo tema
  62 + *
  63 + * tema e fornecido por i3GEO.arvoreDeCamadas o ajuste das propriedades
  64 + * e necessario para que as propriedades aparecam de forma correta na
  65 + * arvore de camadas
  66 + */
  67 + aplicaPropriedades: function(camada){
  68 + if(camada.plugini3geo != ""){
  69 + camada = i3GEO.pluginI3geo[camada.plugini3geo.plugin][i3GEO.Interface.ATUAL].aplicaPropriedades(camada);
  70 + }
  71 + return camada;
61 }, 72 },
62 /** 73 /**
63 * Function: heatmap 74 * Function: heatmap
64 - * 75 + *
65 * Mapa de calor 76 * Mapa de calor
66 - * 77 + *
67 * Gera um layer do tipo mapa de calor e adiciona ao mapa 78 * Gera um layer do tipo mapa de calor e adiciona ao mapa
68 - * 79 + *
69 * As depend&ecirc;ncias em javascript sao carregadas via script tag por 80 * As depend&ecirc;ncias em javascript sao carregadas via script tag por
70 * meio de ferramentas/heatmap/openlayers_js.php 81 * meio de ferramentas/heatmap/openlayers_js.php
71 - * 82 + *
72 * Esse programa tamb&eacute;m obt&eacute;m os dados necess&aacute;rios 83 * Esse programa tamb&eacute;m obt&eacute;m os dados necess&aacute;rios
73 * ao plugin 84 * ao plugin
74 - * 85 + *
75 * O layer existente no mapfile deve conter um metadata chamado 86 * O layer existente no mapfile deve conter um metadata chamado
76 * PLUGINI3GEO 87 * PLUGINI3GEO
77 - * 88 + *
78 * Esse matadado deve conter uma string que ser&aacute; transformada em 89 * Esse matadado deve conter uma string que ser&aacute; transformada em
79 * um objeto javascript para uso no plugin 90 * um objeto javascript para uso no plugin
80 - * 91 + *
81 * Exemplo: 92 * Exemplo:
82 - * 93 + *
83 * "PLUGINI3GEO" '{"plugin":"heatmap","parametros":{"coluna":"teste"}}' 94 * "PLUGINI3GEO" '{"plugin":"heatmap","parametros":{"coluna":"teste"}}'
84 - * 95 + *
85 * Coluna &eacute; a que cont&eacute;m os dados num&eacute;ricos que 96 * Coluna &eacute; a que cont&eacute;m os dados num&eacute;ricos que
86 * definem a quantidade de uma medida em cada ponto e &eacute; usada 97 * definem a quantidade de uma medida em cada ponto e &eacute; usada
87 * para gerar a representa&ccedil;&atilde;o. Se for vazia, considera-se 98 * para gerar a representa&ccedil;&atilde;o. Se for vazia, considera-se
88 * o valor como 1 99 * o valor como 1
89 - * 100 + *
90 * As cores das classes existentes no LAYER ser&atilde;o utilizadas para 101 * As cores das classes existentes no LAYER ser&atilde;o utilizadas para
91 * calcular as cores do mapa de calor. Se n&atilde;o existirem classes, 102 * calcular as cores do mapa de calor. Se n&atilde;o existirem classes,
92 * ser&aacute; usado o default. 103 * ser&aacute; usado o default.
93 - * 104 + *
94 */ 105 */
95 heatmap : { 106 heatmap : {
96 - googlemaps: function(camada){  
97 - var p = i3GEO.configura.locaplic  
98 - + "/ferramentas/heatmap/googlemaps_js.php", carregaJs = "nao", crialayer;  
99 - criaLayer = function() {  
100 - var heatmap,pontos;  
101 - heatmap = new HeatmapOverlay(i3GeoMap, {  
102 - "radius":15,  
103 - "visible":true,  
104 - "opacity":60,  
105 - "gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" },  
106 - "legend": {  
107 - "title": camada.tema,  
108 - "position": "bl",  
109 - "offset": [5,50]  
110 - }  
111 - });  
112 - pontos={  
113 - max: 10,  
114 - data: heatmap_dados 107 + googlemaps: {
  108 + aplicaPropriedades: function(camada){
  109 + return camada;
  110 + },
  111 + inicia: function(camada){
  112 + var p = i3GEO.configura.locaplic
  113 + + "/ferramentas/heatmap/googlemaps_js.php", carregaJs = "nao", crialayer;
  114 + criaLayer = function() {
  115 + var heatmap,pontos;
  116 + heatmap = new HeatmapOverlay(i3GeoMap, camada.name, {
  117 + "radius":15,
  118 + "visible":true,
  119 + "opacity":60,
  120 + "gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" },
  121 + "legend": {
  122 + "title": camada.tema,
  123 + "position": "bl",
  124 + "offset": [5,50]
  125 + }
  126 + });
  127 + i3GeoMap.overlayMapTypes.insertAt(0, heatmap);
  128 + pontos={
  129 + max: 10,
  130 + data: heatmap_dados
  131 + };
  132 + i3GEO.janela.fechaAguarde("aguardePlugin");
  133 + heatmap.setDataSet(pontos);
  134 + heatmap_dados = null;
  135 + // i3GeoMap.setZoom(i3GeoMap.getZoom());
115 }; 136 };
116 - i3GEO.janela.fechaAguarde("aguardePlugin");  
117 - heatmap.setDataSet(pontos);  
118 - heatmap_dados = null;  
119 - //i3GeoMap.setZoom(i3GeoMap.getZoom());  
120 - };  
121 - if (typeof (HeatmapOverlay) === 'undefined') {  
122 - carregaJs = "sim"; 137 + if (typeof (HeatmapOverlay) === 'undefined') {
  138 + carregaJs = "sim";
  139 + }
  140 + p += "?carregajs=" + carregaJs + "&layer=" + camada.name
  141 + + "&coluna=" + camada.plugini3geo.parametros.coluna
  142 + + "&g_sid=" + i3GEO.configura.sid
  143 + + "&nomevariavel=heatmap_dados";
  144 + i3GEO.util.scriptTag(p, criaLayer,
  145 + "i3GEO.pluginI3geo.heatmap_script");
123 } 146 }
124 - p += "?carregajs=" + carregaJs + "&layer=" + camada.name  
125 - + "&coluna=" + camada.plugini3geo.parametros.coluna  
126 - + "&g_sid=" + i3GEO.configura.sid  
127 - + "&nomevariavel=heatmap_dados";  
128 - i3GEO.util.scriptTag(p, criaLayer,  
129 - "i3GEO.pluginI3geo.heatmap_script");  
130 }, 147 },
131 - openlayers : function(camada) {  
132 - var p = i3GEO.configura.locaplic  
133 - + "/ferramentas/heatmap/openlayers_js.php", carregaJs = "nao", crialayer;  
134 - criaLayer = function() {  
135 - var heatmap, transformedTestData = { max: 10 , data: [] },  
136 - data = heatmap_dados,  
137 - datalen = heatmap_dados.length,  
138 - nudata = [];  
139 - // in order to use the OpenLayers Heatmap Layer we have to transform our data into  
140 - // { max: <max>, data: [{lonlat: <OpenLayers.LonLat>, count: <count>},...]}  
141 - while(datalen--){  
142 - nudata.push({  
143 - lonlat: new OpenLayers.LonLat(data[datalen].lng, heatmap_dados[datalen].lat),  
144 - count: heatmap_dados[datalen].count  
145 - });  
146 - }  
147 - transformedTestData.data = nudata;  
148 - // create our heatmap layer  
149 - heatmap = new OpenLayers.Layer.Heatmap(  
150 - camada.name,  
151 - i3geoOL,  
152 - i3geoOL.baseLayer,  
153 - {  
154 - visible: true,  
155 - radius:10,  
156 - "gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" },  
157 - "legend": {  
158 - "title": camada.tema,  
159 - "position": "bl",  
160 - "offset": [5,50] 148 + openlayers : {
  149 + aplicaPropriedades: function(camada){
  150 + camada.sel = "nao";
  151 + camada.download = "nao";
  152 + camada.AGUARDALEGENDA = false;
  153 + camada.temporizador = "";
  154 + camada.copia = false;
  155 + camada.procurar = false;
  156 + camada.toponimia = false;
  157 + camada.etiquetas = false;
  158 + camada.tabela = false;
  159 + camada.grafico = false;
  160 + camada.destacar = false;
  161 + camada.wms = false;
  162 + camada.classe = "NAO";
  163 + return camada;
  164 + },
  165 + inicia: function(camada) {
  166 + var p = i3GEO.configura.locaplic
  167 + + "/ferramentas/heatmap/openlayers_js.php", carregaJs = "nao", crialayer;
  168 + criaLayer = function() {
  169 + var heatmap, transformedTestData = { max: 10 , data: [] },
  170 + data = heatmap_dados,
  171 + datalen = heatmap_dados.length,
  172 + nudata = [];
  173 + // in order to use the OpenLayers Heatmap Layer we have
  174 + // to
  175 + // transform our data into
  176 + // { max: <max>, data: [{lonlat: <OpenLayers.LonLat>,
  177 + // count:
  178 + // <count>},...]}
  179 + while(datalen--){
  180 + nudata.push({
  181 + lonlat: new OpenLayers.LonLat(data[datalen].lng, heatmap_dados[datalen].lat),
  182 + count: heatmap_dados[datalen].count
  183 + });
  184 + }
  185 + transformedTestData.data = nudata;
  186 + // create our heatmap layer
  187 + heatmap = new OpenLayers.Layer.Heatmap(
  188 + camada.name,
  189 + i3geoOL,
  190 + i3geoOL.baseLayer,
  191 + {
  192 + visible: true,
  193 + radius:10,
  194 + "gradient": { 0.45: "rgb(0,0,255)", 0.55: "rgb(0,255,255)", 0.65: "rgb(0,255,0)", 0.95: "yellow", 1.0: "rgb(255,0,0)" },
  195 + "legend": {
  196 + "title": camada.tema,
  197 + "position": "bl",
  198 + "offset": [5,50]
  199 + }
  200 + },
  201 + {
  202 + isBaseLayer: false,
  203 + opacity: 0.3,
  204 + projection: new OpenLayers.Projection("EPSG:4326")
161 } 205 }
162 - },  
163 - {  
164 - isBaseLayer: false,  
165 - opacity: 0.3,  
166 - projection: new OpenLayers.Projection("EPSG:4326")  
167 - }  
168 - );  
169 - i3geoOL.addLayer(heatmap);  
170 - heatmap.setDataSet(transformedTestData);  
171 -  
172 - heatmap_dados = null;  
173 - i3GEO.janela.fechaAguarde("aguardePlugin");  
174 - };  
175 - if (typeof (HeatmapOverlay) === 'undefined') {  
176 - carregaJs = "sim"; 206 + );
  207 + i3geoOL.addLayer(heatmap);
  208 + heatmap.setDataSet(transformedTestData);
  209 + heatmap_dados = null;
  210 + i3GEO.janela.fechaAguarde("aguardePlugin");
  211 + };
  212 + if (typeof (HeatmapOverlay) === 'undefined') {
  213 + carregaJs = "sim";
  214 + }
  215 + p += "?carregajs=" + carregaJs + "&layer=" + camada.name
  216 + + "&coluna=" + camada.plugini3geo.parametros.coluna
  217 + + "&g_sid=" + i3GEO.configura.sid
  218 + + "&nomevariavel=heatmap_dados";
  219 + i3GEO.util.scriptTag(p, criaLayer,
  220 + "i3GEO.pluginI3geo.heatmap_script");
  221 + }
  222 + },
  223 + googleearth: {
  224 + inicia: function(){
  225 + alert("Plugin nao disponivel");
177 } 226 }
178 - p += "?carregajs=" + carregaJs + "&layer=" + camada.name  
179 - + "&coluna=" + camada.plugini3geo.parametros.coluna  
180 - + "&g_sid=" + i3GEO.configura.sid  
181 - + "&nomevariavel=heatmap_dados";  
182 - i3GEO.util.scriptTag(p, criaLayer,  
183 - "i3GEO.pluginI3geo.heatmap_script");  
184 } 227 }
185 } 228 }
186 } 229 }
187 \ No newline at end of file 230 \ No newline at end of file
ferramentas/heatmap/googlemaps_js.php
@@ -27,7 +27,8 @@ include_once($dir.&quot;/../../classesphp/classe_atributos.php&quot;); @@ -27,7 +27,8 @@ include_once($dir.&quot;/../../classesphp/classe_atributos.php&quot;);
27 27
28 $m = new Atributos($map_file,$layer); 28 $m = new Atributos($map_file,$layer);
29 $registros = $m->listaRegistrosXY($coluna, "brasil", "tudo"); 29 $registros = $m->listaRegistrosXY($coluna, "brasil", "tudo");
30 -$n = count($registros); 30 +//TODO
  31 +$n = 100;//count($registros);
31 $resultado = array(); 32 $resultado = array();
32 if(empty($coluna)){ 33 if(empty($coluna)){
33 foreach($registros as $r){ 34 foreach($registros as $r){
ferramentas/heatmap/openlayers_js.php
@@ -27,7 +27,8 @@ include_once($dir.&quot;/../../classesphp/classe_atributos.php&quot;); @@ -27,7 +27,8 @@ include_once($dir.&quot;/../../classesphp/classe_atributos.php&quot;);
27 27
28 $m = new Atributos($map_file,$layer); 28 $m = new Atributos($map_file,$layer);
29 $registros = $m->listaRegistrosXY($coluna, "brasil", "tudo"); 29 $registros = $m->listaRegistrosXY($coluna, "brasil", "tudo");
30 -$n = count($registros); 30 +//TODO
  31 +$n = 100;//count($registros);
31 $resultado = array(); 32 $resultado = array();
32 if(empty($coluna)){ 33 if(empty($coluna)){
33 foreach($registros as $r){ 34 foreach($registros as $r){
pacotes/heatmap/src/heatmap-gmaps.js
@@ -6,172 +6,171 @@ @@ -6,172 +6,171 @@
6 * and the Beerware (http://en.wikipedia.org/wiki/Beerware) license. 6 * and the Beerware (http://en.wikipedia.org/wiki/Beerware) license.
7 */ 7 */
8 8
9 -//cria um layer idiota para poder calcular a projecao 9 +//i3GeoMapOverlay vem de i3GEO.Interface e e usado para calcular projecao
10 //http://stackoverflow.com/questions/1538681/how-to-call-fromlatlngtodivpixel-in-google-maps-api-v3 10 //http://stackoverflow.com/questions/1538681/how-to-call-fromlatlngtodivpixel-in-google-maps-api-v3
11 -heatmapFooOverlay.prototype = new google.maps.OverlayView();  
12 -heatmapFooOverlay.prototype.onAdd = function() { }  
13 -heatmapFooOverlay.prototype.onRemove = function() { }  
14 -heatmapFooOverlay.prototype.draw = function() { }  
15 -function heatmapFooOverlay() { this.setMap(i3GeoMap); }  
16 -var heatmapBarOverlay = new heatmapFooOverlay();  
17 -  
18 -  
19 -function HeatmapOverlay(map, cfg){  
20 - var me = this;  
21 -  
22 - me.heatmap = null;  
23 - me.conf = cfg;  
24 - me.latlngs = [];  
25 - me.bounds = null;  
26 - me.setMap(map);  
27 - google.maps.event.addListener(map, 'bounds_changed', function() { me.draw() }); 11 +
  12 +function HeatmapOverlay(map, name, cfg) {
  13 + var me = this;
  14 + me.name = name;
  15 + me.heatmap = null;
  16 + me.conf = cfg;
  17 + me.latlngs = [];
  18 + me.bounds = null;
  19 + me.setMap(map);
  20 + google.maps.event.addListener(map, 'bounds_changed', function() {
  21 + me.draw()
  22 + });
28 } 23 }
29 24
30 HeatmapOverlay.prototype = new google.maps.OverlayView(); 25 HeatmapOverlay.prototype = new google.maps.OverlayView();
31 26
32 -HeatmapOverlay.prototype.onAdd = function(){ 27 +HeatmapOverlay.prototype.onAdd = function() {
33 28
34 - var panes = this.getPanes(),  
35 - w = this.getMap().getDiv().clientWidth,  
36 - h = this.getMap().getDiv().clientHeight,  
37 - el = document.createElement("div"); 29 + var panes = this.getPanes(), w = this.getMap().getDiv().clientWidth, h = this
  30 + .getMap().getDiv().clientHeight, el = document.createElement("div");
38 31
39 - el.style.cssText = "position:absolute;top:0;left:0;width:"+w+"px;height:"+h+"px;"; 32 + el.style.cssText = "position:absolute;top:0;left:0;width:" + w
  33 + + "px;height:" + h + "px;";
40 34
41 - this.conf.element = el;  
42 - panes.overlayLayer.appendChild(el); 35 + this.conf.element = el;
  36 + panes.overlayLayer.appendChild(el);
43 37
44 - this.heatmap = h337.create(this.conf); 38 + this.heatmap = h337.create(this.conf);
45 } 39 }
46 40
47 -HeatmapOverlay.prototype.onRemove = function(){  
48 - // Empty for now. 41 +HeatmapOverlay.prototype.onRemove = function() {
  42 + // Empty for now.
49 } 43 }
50 44
51 -HeatmapOverlay.prototype.draw = function(){  
52 -  
53 - var me = this,  
54 - overlayProjection = heatmapBarOverlay.getProjection(), //me.getProjection(),  
55 - currentBounds = me.map.getBounds();  
56 -  
57 - if (currentBounds.equals(me.bounds)) {  
58 - return;  
59 - }  
60 - me.bounds = currentBounds;  
61 -  
62 - var ne = overlayProjection.fromLatLngToDivPixel(currentBounds.getNorthEast()),  
63 - sw = overlayProjection.fromLatLngToDivPixel(currentBounds.getSouthWest()),  
64 - topY = ne.y,  
65 - leftX = sw.x,  
66 - h = sw.y - ne.y,  
67 - w = ne.x - sw.x;  
68 -  
69 - me.conf.element.style.left = leftX + 'px';  
70 - me.conf.element.style.top = topY + 'px';  
71 - me.conf.element.style.width = w + 'px';  
72 - me.conf.element.style.height = h + 'px';  
73 - me.heatmap.store.get("heatmap").resize();  
74 -  
75 - if(this.latlngs.length > 0){  
76 - this.heatmap.clear();  
77 -  
78 - var len = this.latlngs.length,  
79 - projection = heatmapBarOverlay.getProjection(); //this.getProjection();  
80 - d = {  
81 - max: this.heatmap.store.max,  
82 - data: []  
83 - };  
84 -  
85 - while(len--){  
86 - var latlng = this.latlngs[len].latlng;  
87 - if(!currentBounds.contains(latlng)) { continue; }  
88 -  
89 - // DivPixel is pixel in overlay pixel coordinates... we need  
90 - // to transform to screen coordinates so it'll match the canvas  
91 - // which is continually repositioned to follow the screen.  
92 - var divPixel = projection.fromLatLngToDivPixel(latlng),  
93 - screenPixel = new google.maps.Point(divPixel.x - leftX, divPixel.y - topY);  
94 -  
95 - var roundedPoint = this.pixelTransform(screenPixel);  
96 -  
97 - d.data.push({  
98 - x: roundedPoint.x,  
99 - y: roundedPoint.y,  
100 - count: this.latlngs[len].c  
101 - });  
102 - }  
103 - this.heatmap.store.setDataSet(d);  
104 - } 45 +HeatmapOverlay.prototype.draw = function() {
  46 +
  47 + var me = this, overlayProjection = i3GeoMapOverlay.getProjection(), // me.getProjection(),
  48 + currentBounds = me.map.getBounds();
  49 +
  50 + if (currentBounds.equals(me.bounds)) {
  51 + return;
  52 + }
  53 + me.bounds = currentBounds;
  54 +
  55 + var ne = overlayProjection.fromLatLngToDivPixel(currentBounds
  56 + .getNorthEast()), sw = overlayProjection
  57 + .fromLatLngToDivPixel(currentBounds.getSouthWest()), topY = ne.y, leftX = sw.x, h = sw.y
  58 + - ne.y, w = ne.x - sw.x;
  59 +
  60 + me.conf.element.style.left = leftX + 'px';
  61 + me.conf.element.style.top = topY + 'px';
  62 + me.conf.element.style.width = w + 'px';
  63 + me.conf.element.style.height = h + 'px';
  64 + me.heatmap.store.get("heatmap").resize();
  65 +
  66 + if (this.latlngs.length > 0) {
  67 + this.heatmap.clear();
  68 +
  69 + var len = this.latlngs.length, projection = i3GeoMapOverlay
  70 + .getProjection(); // this.getProjection();
  71 + d = {
  72 + max : this.heatmap.store.max,
  73 + data : []
  74 + };
  75 +
  76 + while (len--) {
  77 + var latlng = this.latlngs[len].latlng;
  78 + if (!currentBounds.contains(latlng)) {
  79 + continue;
  80 + }
  81 +
  82 + // DivPixel is pixel in overlay pixel coordinates... we need
  83 + // to transform to screen coordinates so it'll match the canvas
  84 + // which is continually repositioned to follow the screen.
  85 + var divPixel = projection.fromLatLngToDivPixel(latlng), screenPixel = new google.maps.Point(
  86 + divPixel.x - leftX, divPixel.y - topY);
  87 +
  88 + var roundedPoint = this.pixelTransform(screenPixel);
  89 +
  90 + d.data.push({
  91 + x : roundedPoint.x,
  92 + y : roundedPoint.y,
  93 + count : this.latlngs[len].c
  94 + });
  95 + }
  96 + this.heatmap.store.setDataSet(d);
  97 + }
105 } 98 }
106 99
107 -HeatmapOverlay.prototype.pixelTransform = function(p){  
108 - var w = i3GEO.parametros.w,//this.heatmap.get("width"),  
109 - h = i3GEO.parametros.h; //this.heatmap.get("height"); 100 +HeatmapOverlay.prototype.pixelTransform = function(p) {
  101 + var w = i3GEO.parametros.w, // this.heatmap.get("width"),
  102 + h = i3GEO.parametros.h; // this.heatmap.get("height");
110 103
111 - while(p.x < 0){  
112 - p.x+=w;  
113 - } 104 + while (p.x < 0) {
  105 + p.x += w;
  106 + }
114 107
115 - while(p.x > w){  
116 - p.x-=w;  
117 - } 108 + while (p.x > w) {
  109 + p.x -= w;
  110 + }
118 111
119 - while(p.y < 0){  
120 - p.y+=h;  
121 - } 112 + while (p.y < 0) {
  113 + p.y += h;
  114 + }
122 115
123 - while(p.y > h){  
124 - p.y-=h;  
125 - } 116 + while (p.y > h) {
  117 + p.y -= h;
  118 + }
126 119
127 - p.x = (p.x >> 0);  
128 - p.y = (p.y >> 0); 120 + p.x = (p.x >> 0);
  121 + p.y = (p.y >> 0);
129 122
130 - return p; 123 + return p;
131 } 124 }
132 125
133 -HeatmapOverlay.prototype.setDataSet = function(data){  
134 -  
135 - var me = this,  
136 - currentBounds = me.map.getBounds(),  
137 - mapdata = {  
138 - max: data.max,  
139 - data: []  
140 - },  
141 - d = data.data,  
142 - dlen = d.length,  
143 - projection = heatmapBarOverlay.getProjection(),//me.getProjection(),  
144 - latlng, point;  
145 -  
146 - me.latlngs = [];  
147 -  
148 - while(dlen--){  
149 - latlng = new google.maps.LatLng(d[dlen].lat, d[dlen].lng);  
150 -  
151 - if(!currentBounds.contains(latlng)) {  
152 - continue;  
153 - }  
154 -  
155 - me.latlngs.push({latlng: latlng, c: d[dlen].count});  
156 - point = me.pixelTransform(projection.fromLatLngToDivPixel(latlng));  
157 - mapdata.data.push({x: point.x, y: point.y, count: d[dlen].count});  
158 - }  
159 - if(me.heatmap){ 126 +HeatmapOverlay.prototype.setDataSet = function(data) {
  127 +
  128 + var me = this, currentBounds = me.map.getBounds(), mapdata = {
  129 + max : data.max,
  130 + data : []
  131 + }, d = data.data, dlen = d.length, projection = i3GeoMapOverlay
  132 + .getProjection(), // me.getProjection(),
  133 + latlng, point;
  134 +
  135 + me.latlngs = [];
  136 +
  137 + while (dlen--) {
  138 + latlng = new google.maps.LatLng(d[dlen].lat, d[dlen].lng);
  139 +
  140 + if (!currentBounds.contains(latlng)) {
  141 + continue;
  142 + }
  143 +
  144 + me.latlngs.push({
  145 + latlng : latlng,
  146 + c : d[dlen].count
  147 + });
  148 + point = me.pixelTransform(projection.fromLatLngToDivPixel(latlng));
  149 + mapdata.data.push({
  150 + x : point.x,
  151 + y : point.y,
  152 + count : d[dlen].count
  153 + });
  154 + }
  155 + if (me.heatmap) {
160 me.heatmap.clear(); 156 me.heatmap.clear();
161 - me.heatmap.store.setDataSet(mapdata); 157 + me.heatmap.store.setDataSet(mapdata);
162 } 158 }
163 } 159 }
164 160
165 -HeatmapOverlay.prototype.addDataPoint = function(lat, lng, count){ 161 +HeatmapOverlay.prototype.addDataPoint = function(lat, lng, count) {
166 162
167 - var projection = heatmapBarOverlay.getProjection(),//this.getProjection(),  
168 - latlng = new google.maps.LatLng(lat, lng),  
169 - point = this.pixelTransform(projection.fromLatLngToDivPixel(latlng)); 163 + var projection = i3GeoMapOverlay.getProjection(), // this.getProjection(),
  164 + latlng = new google.maps.LatLng(lat, lng), point = this
  165 + .pixelTransform(projection.fromLatLngToDivPixel(latlng));
170 166
171 - this.heatmap.store.addDataPoint(point.x, point.y, count);  
172 - this.latlngs.push({ latlng: latlng, c: count }); 167 + this.heatmap.store.addDataPoint(point.x, point.y, count);
  168 + this.latlngs.push({
  169 + latlng : latlng,
  170 + c : count
  171 + });
173 } 172 }
174 173
175 -HeatmapOverlay.prototype.toggle = function(){  
176 - this.heatmap.toggleDisplay(); 174 +HeatmapOverlay.prototype.toggle = function() {
  175 + this.heatmap.toggleDisplay();
177 } 176 }
pacotes/heatmap/src/heatmap-openlayers.js
@@ -18,115 +18,134 @@ OpenLayers.Layer.Heatmap = OpenLayers.Class(OpenLayers.Layer, { @@ -18,115 +18,134 @@ OpenLayers.Layer.Heatmap = OpenLayers.Class(OpenLayers.Layer, {
18 mapLayer: null, 18 mapLayer: null,
19 // we store the lon lat data, because we have to redraw with new positions on zoomend|moveend 19 // we store the lon lat data, because we have to redraw with new positions on zoomend|moveend
20 tmpData: {}, 20 tmpData: {},
21 - initialize: function(name, map, mLayer, hmoptions, options){  
22 - var heatdiv = document.createElement("div"),  
23 - handler; 21 + initialize: function(name, map, mLayer, hmoptions, options){
  22 + var heatdiv = document.createElement("div"),
  23 + handler;
24 24
25 - OpenLayers.Layer.prototype.initialize.apply(this, [name, options]); 25 + OpenLayers.Layer.prototype.initialize.apply(this, [name, options]);
26 26
27 - heatdiv.style.cssText = "position:absolute;width:"+map.size.w+"px;height:"+map.size.h+"px;";  
28 - // this will be the heatmaps element  
29 - this.div.appendChild(heatdiv);  
30 - // add to our heatmap.js config  
31 - hmoptions.element = heatdiv;  
32 - this.mapLayer = mLayer;  
33 - this.map = map;  
34 - // create the heatmap with passed heatmap-options  
35 - this.heatmap = h337.create(hmoptions); 27 + heatdiv.style.cssText = "position:absolute;width:"+map.size.w+"px;height:"+map.size.h+"px;";
  28 + // this will be the heatmaps element
  29 + this.div.appendChild(heatdiv);
  30 + // add to our heatmap.js config
  31 + hmoptions.element = heatdiv;
  32 + this.mapLayer = mLayer;
  33 + this.map = map;
  34 + // create the heatmap with passed heatmap-options
  35 + this.heatmap = h337.create(hmoptions);
36 36
37 - handler = function(){  
38 - if(this.tmpData.max){  
39 - this.updateLayer();  
40 - }  
41 - };  
42 - // on zoomend and moveend we have to move the canvas element and redraw the datapoints with new positions  
43 - map.events.register("zoomend", this, handler);  
44 - map.events.register("moveend", this, handler);  
45 - },  
46 - updateLayer: function(){  
47 - var pixelOffset = this.getPixelOffset(),  
48 - el = this.heatmap.get('element');  
49 - // if the pixeloffset e.g. for x was positive move the canvas element to the left by setting left:-offset.y px  
50 - // otherwise move it the right by setting it a positive value. same for top  
51 - el.style.top = ((pixelOffset.y > 0)?('-'+pixelOffset.y):(Math.abs(pixelOffset.y)))+'px';  
52 - el.style.left = ((pixelOffset.x > 0)?('-'+pixelOffset.x):(Math.abs(pixelOffset.x)))+'px'; 37 + handler = function(){
  38 + if(this.tmpData.max){
  39 + this.updateLayer();
  40 + }
  41 + };
  42 + handler1 = function(){
  43 + if(this.tmpData.max){
  44 + this.toggle();
  45 + this.updateLayer();
  46 + }
  47 + };
53 48
54 - this.setDataSet(this.tmpData); 49 + // on zoomend and moveend we have to move the canvas element and redraw the datapoints with new positions
  50 + //map.events.register("zoomend", this, handler);
  51 + map.events.register("moveend", this, handler);
  52 + this.events.register("visibilitychanged", this,handler1);
  53 + map.events.register(
  54 + "removed",
  55 + this,
  56 + function(){
  57 + if(this.tmpData.max){
  58 + this.destroy();
  59 + }
  60 + });
  61 + },
  62 + updateLayer: function(){
  63 + var pixelOffset = this.getPixelOffset(),
  64 + el = this.heatmap.get('element');
  65 + // if the pixeloffset e.g. for x was positive move the canvas element to the left by setting left:-offset.y px
  66 + // otherwise move it the right by setting it a positive value. same for top
  67 + el.style.top = ((pixelOffset.y > 0)?('-'+pixelOffset.y):(Math.abs(pixelOffset.y)))+'px';
  68 + el.style.left = ((pixelOffset.x > 0)?('-'+pixelOffset.x):(Math.abs(pixelOffset.x)))+'px';
  69 + //var p = el.parentNode.style;
  70 + //console.warn(p.display)
  71 + if(this.visibility === true){
  72 + this.setDataSet(this.tmpData);
  73 + }
55 }, 74 },
56 - getPixelOffset: function () {  
57 - var o = this.mapLayer.map.layerContainerOrigin,  
58 - o_lonlat = new OpenLayers.LonLat(o.lon, o.lat),  
59 - o_pixel = this.mapLayer.getViewPortPxFromLonLat(o_lonlat),  
60 - c = this.mapLayer.map.center,  
61 - c_lonlat = new OpenLayers.LonLat(c.lon, c.lat),  
62 - c_pixel = this.mapLayer.getViewPortPxFromLonLat(c_lonlat); 75 + getPixelOffset: function () {
  76 + var o = this.mapLayer.map.layerContainerOrigin,
  77 + o_lonlat = new OpenLayers.LonLat(o.lon, o.lat),
  78 + o_pixel = this.mapLayer.getViewPortPxFromLonLat(o_lonlat),
  79 + c = this.mapLayer.map.center,
  80 + c_lonlat = new OpenLayers.LonLat(c.lon, c.lat),
  81 + c_pixel = this.mapLayer.getViewPortPxFromLonLat(c_lonlat);
63 82
64 - return {  
65 - x: o_pixel.x - c_pixel.x,  
66 - y: o_pixel.y - c_pixel.y  
67 - }; 83 + return {
  84 + x: o_pixel.x - c_pixel.x,
  85 + y: o_pixel.y - c_pixel.y
  86 + };
68 87
69 - }, 88 + },
70 setDataSet: function(obj){ 89 setDataSet: function(obj){
71 - var set = {}, 90 + var set = {},
72 dataset = obj.data, 91 dataset = obj.data,
73 dlen = dataset.length, 92 dlen = dataset.length,
74 - entry, lonlat, pixel; 93 + entry, lonlat, pixel;
75 94
76 set.max = obj.max; 95 set.max = obj.max;
77 set.data = []; 96 set.data = [];
78 // get the pixels for all the lonlat entries 97 // get the pixels for all the lonlat entries
79 - while(dlen--){  
80 - entry = dataset[dlen],  
81 - lonlat = entry.lonlat.clone().transform(this.projection, this.map.getProjectionObject()),  
82 - pixel = this.roundPixels(this.getViewPortPxFromLonLat(lonlat));  
83 -  
84 - if(pixel){  
85 - set.data.push({x: pixel.x, y: pixel.y, count: entry.count});  
86 - }  
87 - }  
88 - this.tmpData = obj;  
89 - this.heatmap.store.setDataSet(set); 98 + while(dlen--){
  99 + entry = dataset[dlen],
  100 + lonlat = entry.lonlat.clone().transform(this.projection, this.map.getProjectionObject()),
  101 + pixel = this.roundPixels(this.getViewPortPxFromLonLat(lonlat));
  102 +
  103 + if(pixel){
  104 + set.data.push({x: pixel.x, y: pixel.y, count: entry.count});
  105 + }
  106 + }
  107 + this.tmpData = obj;
  108 + this.heatmap.store.setDataSet(set);
90 }, 109 },
91 // we don't want to have decimal numbers such as xxx.9813212 since they slow canvas performance down + don't look nice 110 // we don't want to have decimal numbers such as xxx.9813212 since they slow canvas performance down + don't look nice
92 roundPixels: function(p){ 111 roundPixels: function(p){
93 - if(p.x < 0 || p.y < 0){  
94 - return false;  
95 - }  
96 -  
97 - p.x = (p.x >> 0);  
98 - p.y = (p.y >> 0);  
99 -  
100 - return p; 112 + if(p.x < 0 || p.y < 0){
  113 + return false;
  114 + }
  115 +
  116 + p.x = (p.x >> 0);
  117 + p.y = (p.y >> 0);
  118 +
  119 + return p;
101 }, 120 },
102 // same procedure as setDataSet 121 // same procedure as setDataSet
103 addDataPoint: function(lonlat){ 122 addDataPoint: function(lonlat){
104 - var pixel = this.roundPixels(this.mapLayer.getViewPortPxFromLonLat(lonlat)),  
105 - entry = {lonlat: lonlat},  
106 - args; 123 + var pixel = this.roundPixels(this.mapLayer.getViewPortPxFromLonLat(lonlat)),
  124 + entry = {lonlat: lonlat},
  125 + args;
  126 +
  127 + if(arguments.length == 2){
  128 + entry.count = arguments[1];
  129 + }
107 130
108 - if(arguments.length == 2){  
109 - entry.count = arguments[1];  
110 - } 131 + this.tmpData.data.push(entry);
111 132
112 - this.tmpData.data.push(entry);  
113 -  
114 - if(pixel){  
115 - args = [pixel.x, pixel.y]; 133 + if(pixel){
  134 + args = [pixel.x, pixel.y];
116 135
117 - if(arguments.length == 2){  
118 - args.push(arguments[1]); 136 + if(arguments.length == 2){
  137 + args.push(arguments[1]);
  138 + }
  139 + this.heatmap.store.addDataPoint.apply(this.heatmap.store, args);
119 } 140 }
120 - this.heatmap.store.addDataPoint.apply(this.heatmap.store, args);  
121 - }  
122 141
123 }, 142 },
124 toggle: function(){ 143 toggle: function(){
125 this.heatmap.toggleDisplay(); 144 this.heatmap.toggleDisplay();
126 }, 145 },
127 destroy: function() { 146 destroy: function() {
128 - // for now, nothing special to do here.  
129 - OpenLayers.Layer.Grid.prototype.destroy.apply(this, arguments);  
130 - }, 147 + // for now, nothing special to do here.
  148 + OpenLayers.Layer.Grid.prototype.destroy.apply(this, arguments);
  149 + },
131 CLASS_NAME: "OpenLayers.Layer.Heatmap" 150 CLASS_NAME: "OpenLayers.Layer.Heatmap"
132 }); 151 });