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

से मूल्य प्राप्त करें मैं यह देखने के लिए इस कोड का उपयोग करता हूं कि कौन सा क्षेत्र क्लिक किया गया है। e["region"] उस क्षेत्र की पंक्ति संख्या देता है, और फिर मैं क्षेत्र (मार्कर) नाम देखने के लिए getValue का उपयोग करता हूं।Google एपीआई, डेटाटेबल

अब, कंसोल लॉग में इस त्रुटि दिखाता है:

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

कृपया अधिक कोड पेस्ट करें। –

+0

क्या यह जावास्क्रिप्ट है? यदि ऐसा है, तो कृपया पुनः टैग करें। –

+0

क्या आप इसका पूरा उदाहरण तैयार कर सकते हैं? इस तरह, रुचि रखने वाले सभी लोग इसे स्वयं चला सकते हैं और जांच सकते हैं कि यह कैसे काम करता है/डीबग/आदि और आपको शायद बेहतर उत्तर मिलेंगे। –

उत्तर

5

मैं कोड द्वारा पोस्ट की गई साथ आपकी समस्या को पुन: पेश नहीं कर सकते हैं - मैं नहीं कर पा रहे क्षेत्र बिल्कुल आग लगाना - लेकिन जो त्रुटि संदेश आप देख रहे हैं, मुझे संदेह है कि आपकी समस्या यह है कि 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 (ई ["क्षेत्र"]), 0)); ("1" को "0" के साथ भी बदलना पड़ा, मेरा बुरा)। – Cristy

संबंधित मुद्दे