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

나는이 코드를 사용하여 클릭 한 지역을 확인합니다. e["region"]은 해당 영역의 행 번호를 제공하고 getValue를 사용하여 영역 (마커) 이름을 봅니다. 이 범위는 [0-14]에서와 같이,Google API, 데이터 테이블에서 가치 얻기

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

어떻게 행 인덱스 1이 유효 할 수있다 : 이제

은 콘솔 로그에서이 오류를 보여줍니다?

는 편집 :이

당신이 가고, 더 많은 코드 : 난 당신이 게시 한 코드를 사용하여 문제를 재현 할 수 없습니다

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

더 많은 코드를 붙여주세요. –

+0

자바 스크립트인가요? 그렇다면 다시 태그하십시오. –

+0

완벽한 예를 들어 주시겠습니까? 그런 식으로 모든 사람들이 관심을 가지고 그/그녀 자신을 실행하고 그것이 어떻게 작동하는지/디버그/etc를 점검 할 수 있고 아마 더 나은 대답을 얻을 수있을 것입니다. –

답변

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

고마워, 나는 그런 생각을 해본 적이 없어. Google은 문자열을 문자열로 해석 할 수 있도록 값을 ""사이에 표시해야합니다. 이 문제를 해결 : console.log (data.getValue (Math.floor (e [ "region"]), 0)); (또한 "1"을 "0"으로 대체해야 함, 내 잘못됨). – Cristy

관련 문제