2011-05-13 24 views
9
google.visualization.events.addListener( 
      geomap, "regionClick", function(e) { 
      console.log(e["region"]); 
      console.log(data.getValue(e["region"],1)); 
      }); 

Utilizo este código para ver en qué región se hace clic. El e["region"] da el número de fila de esa región, y luego uso getValue para ver el nombre de la región (marcador).API de Google, obtenga valor de la tabla de datos

Ahora, en el registro de la consola muestra este error:

Uncaught Error: Invalid row index 1. Should be in the range [0-14]

¿Cómo puede el índice de la fila 1 no es válida, ya que está en el rango [0-14]?

EDIT:

hay que ir, más código :)

 <!-- 
You are free to copy and use this sample in accordance with the terms of the 
Apache license (http://www.apache.org/licenses/LICENSE-2.0.html) 
--> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Google Visualization API Sample</title> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 

    google.load("visualization", "1", {"packages": ["geomap"]}); 

    google.setOnLoadCallback(drawMap); 



    function drawMap() { 

     var data = new google.visualization.DataTable(); 

     data.addRows(24); 

     data.addColumn("string", "City"); 

     data.addColumn("number", "Numar anunturi");data.setValue(0, 0, 'Ilfov'); 

    data.setValue(0, 1, 19); 



    data.setValue(1, 0, 'Giurgiu'); 

    data.setValue(1, 1, 7); 



    data.setValue(2, 0, 'Brasov'); 

    data.setValue(2, 1, 6); 



    data.setValue(3, 0, 'Buzau'); 

    data.setValue(3, 1, 3); 



    data.setValue(4, 0, 'Valcea'); 

    data.setValue(4, 1, 3); 



    data.setValue(5, 0, 'Dolj'); 

    data.setValue(5, 1, 3); 



    data.setValue(6, 0, 'Neamt'); 

    data.setValue(6, 1, 2); 



    data.setValue(7, 0, 'Calarasi'); 

    data.setValue(7, 1, 2); 



    data.setValue(8, 0, 'Dambovita'); 

    data.setValue(8, 1, 2); 



    data.setValue(9, 0, 'Prahova'); 

    data.setValue(9, 1, 2); 



    data.setValue(10, 0, 'Braila'); 

    data.setValue(10, 1, 2); 



    data.setValue(11, 0, 'Constanta'); 

    data.setValue(11, 1, 2); 



    data.setValue(12, 0, 'Suceava'); 

    data.setValue(12, 1, 2); 



    data.setValue(13, 0, 'Caras-Severin'); 

    data.setValue(13, 1, 2); 



    data.setValue(14, 0, 'Cluj'); 

    data.setValue(14, 1, 2); 



    data.setValue(15, 0, 'Bihor'); 

    data.setValue(15, 1, 1); 



    data.setValue(16, 0, 'Bacau'); 

    data.setValue(16, 1, 1); 



    data.setValue(17, 0, 'Maramures'); 

    data.setValue(17, 1, 1); 



    data.setValue(18, 0, 'Arges'); 

    data.setValue(18, 1, 1); 



    data.setValue(19, 0, 'Gorj'); 

    data.setValue(19, 1, 1); 



    data.setValue(20, 0, 'Ialomita'); 

    data.setValue(20, 1, 1); 



    data.setValue(21, 0, 'Bucuresti'); 

    data.setValue(21, 1, 1); 



    data.setValue(22, 0, 'Mures'); 

    data.setValue(22, 1, 1); 



    data.setValue(23, 0, 'Sibiu'); 

    data.setValue(23, 1, 1); 





     var options = {width: 800,height:400}; 

     options["region"] = "RO"; 

     options["colors"] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors 

     options["dataMode"] = "markers"; 



     var container = document.getElementById("map_chart_div"); 

     var geomap = new google.visualization.GeoMap(container); 

     google.visualization.events.addListener( 
      geomap, "regionClick", function(e) { 
      console.log(e["region"]); 
      console.log(data.getValue(e["region"],1)); 
      }); 

     geomap.draw(data, options); 

    } 

    </script> 
</head> 
<body style="font-family: Arial;border: 0 none;"> 
<div id="map_chart_div" style="width: 800px; height: 400px;"></div> 
</body> 
</html> 
​ 
+2

favor pegar más código. –

+0

¿Es JavaScript? Si es así, por favor vuelva a etiquetar. –

+0

¿Podría preparar un ejemplo completo de esto? De esa forma, todos los interesados ​​podrían ejecutarlo ellos mismos y comprobar cómo funciona/depurar/etc. y probablemente obtendrías mejores respuestas. –

Respuesta

5

No puedo reproducir el problema con el código que has enviado - Me parece que no puede obtener la La función regionClick para disparar, pero el mensaje de error que está viendo me hace sospechar que su problema es que e["region"] está devolviendo una cadena, no un número.

Trate de añadir esto a su función:

google.visualization.events.addListener( 
      geomap, "regionClick", function(e) { 
      console.log(e["region"]); 
      console.log("Type of value is: " + typeof(e["region"])); 
      console.log(data.getValue(e["region"],1)); 
      }); 

Entonces, si resulta que está recibiendo una cadena, puede intentar:

google.visualization.events.addListener( 
      geomap, "regionClick", function(e) { 
      console.log(e["region"]); 
      console.log("Type of value is: " + typeof(e["region"])); 
      console.log(data.getValue(Math.floor(e["region"]),1)); 
      }); 
+0

Gracias, hombre, nunca había pensado en eso. Google debería haber mostrado el valor entre "" para que podamos ver que se interpreta como una cadena. Esto resolvió el problema: console.log (data.getValue (Math.floor (e ["region"]), 0)); (Tuve que reemplazar también "1" por "0", mi mal). – Cristy

Cuestiones relacionadas