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

我使用此代码来查看哪个区域被点击。 e["region"]给出了该区域的行号,然后使用getValue查看区域(标记)名称。谷歌API,从数据表中获取价值

现在,在控制台日志显示了这个错误:

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

行索引1怎能是无效的,因为它是在范围[0-14]

编辑:

你去那里,更多的代码:)

 <!-- 
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

,请复制粘贴更多的代码。 – 2011-05-18 18:36:04

+0

是JavaScript吗?如果是这样,请重新标记。 – 2011-05-18 20:59:50

+0

你能准备一个完整的例子吗?这样,每个感兴趣的人都可以自己运行它,并检查它是如何工作/调试/等,你可能会得到更好的答案。 – 2011-05-18 21:01:41

回答

5

我不能与你发布的代码重现你的问题 - 我似乎无法得到regionClick函数完全触发 - 但是你看到的错误信息让我怀疑你的问题是e["region"]返回一个字符串,而不是一个数字。

尝试添加该给你的函数:

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)); 
      }); 

然后,如果事实证明你得到一个字符串,你可以尝试:

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

谢谢你,我从来没有想过这件事。谷歌应该已经显示了“”之间的值,以便我们可以看到它被解释为一个字符串。这解决了这个问题:console.log(data.getValue(Math.floor(e [“region”]),0)); (不得不用“0”代替“1”,我的不好)。 – Cristy 2011-05-22 20:06:54