Google API, получить значение из Datatable - PullRequest
9 голосов
/ 13 мая 2011
google.visualization.events.addListener( 
          geomap, "regionClick", function(e) {
          console.log(e["region"]);
          console.log(data.getValue(e["region"],1));
          }); 

Я использую этот код, чтобы увидеть, в каком регионе нажимается.e["region"] дает номер строки этого региона, и затем я использую getValue, чтобы увидеть имя региона (маркера).

Теперь в журнале консоли появляется эта ошибка:

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

1 Ответ

5 голосов
/ 22 мая 2011

Я не могу воспроизвести вашу проблему с кодом, который вы разместили - я не могу заставить функцию 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));
          }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...