简体   繁体   English

处理地理图表图表包装器中标记的事件

[英]Handling events for markers in a geochart chartwrapper

Can anyone help me to create an event listener for a geochart chartwrapper with markers ?任何人都可以帮助我为带有标记的地理图表图表包装器创建事件侦听器吗? My objective is to throw an alert when the user clicks on a marker.我的目标是在用户点击标记时发出警报。

I have tried我试过了

  google.visualization.events.addListener(pn_1,'ready', function(){
     console.log('dashboard is ready');     
     google.visualization.events.addListener(pn_1_ch,'select',function(){    
        alert('Some random alert');
     });    
  });

But so far it doesn't work.但到目前为止它不起作用。 It throws no error or whatsoever.它不会引发任何错误或任何错误。 However I do get the 'dashboard is ready' message.但是我确实收到了“仪表板已准备好”的消息。 It's only the second eventlistener that isn't working.只有第二个事件侦听器不起作用。

Any clues ?任何线索? Thanks a lot :)非常感谢 :)

BTW pn_1 refers to the dashboard and pn_1_ch refers the the chartwrapper object :)顺便说一句, pn_1 指的是仪表板, pn_1_ch 指的是图表包装器对象 :)

Without seeing all the code, there are several things to check...在没有看到所有代码的情况下,有几件事需要检查......

First, GeoCharts require both loaders.首先, GeoCharts需要两个加载器。 ( /loader.js and /jsapi ) ( /loader.js/jsapi )

Next, I'm using frozen version 44 due to recent problems .接下来,由于最近的问题,我使用的是冻结版本44

As for handling events, listen for the 'ready' event on the ChartWrapper .至于处理事件,请监听ChartWrapper上的'ready'事件。
Once fired, you can access the GeoChart via .getChart() in order to listen for the 'select' event.触发后,您可以通过.getChart()访问 GeoChart 以侦听'select'事件。

With Dashboards , the 'ready' event is fired anytime the chart is re-drawn.使用Dashboards ,在重新绘制图表时会触发'ready'事件。
Here, I remove the event from the ChartWrapper to avoid adding duplicate 'select' listeners when the NumberRangeFilter is applied...在这里,我从 ChartWrapper 中删除了事件,以避免在应用NumberRangeFilter时添加重复的'select'侦听器...

 google.charts.load('44', { callback: drawDashboard, packages: ['controls', 'corechart', 'geochart'] }); function drawDashboard() { var msgDiv = document.getElementById('message_div'); var data = google.visualization.arrayToDataTable([ ['City', 'Population', 'Area'], ['Rome', 2761477, 1285.31], ['Milan', 1324110, 181.76], ['Naples', 959574, 117.27], ['Turin', 907563, 130.17], ['Palermo', 655875, 158.9], ['Genoa', 607906, 243.60], ['Bologna', 380181, 140.7], ['Florence', 371282, 102.41], ['Fiumicino', 67370, 213.44], ['Anzio', 52192, 43.43], ['Ciampino', 38262, 11] ]); var dashboard = new google.visualization.Dashboard( document.getElementById('dashboard_div')); var rangeSlider = new google.visualization.ControlWrapper({ controlType: 'NumberRangeFilter', containerId: 'filter_div', options: { filterColumnLabel: 'Area' } }); var geoChart = new google.visualization.ChartWrapper({ chartType: 'GeoChart', containerId: 'chart_div', options: { region: 'IT', displayMode: 'markers', colorAxis: {colors: ['green', 'blue']} } }); // listen for 'ready' event on ChartWrapper google.visualization.events.addListener(geoChart, 'ready', function () { // remove 'ready' listener to avoid adding multiple 'select' events google.visualization.events.removeAllListeners(geoChart); msgDiv.innerHTML += 'ChartWrapper Ready<br/>'; // listen for 'select' event on GeoChart google.visualization.events.addListener(geoChart.getChart(), 'select', function () { msgDiv.innerHTML += 'GeoChart Selected - ' + JSON.stringify(geoChart.getChart().getSelection()) + '<br/>'; }); }); dashboard.bind(rangeSlider, geoChart); dashboard.draw(data); }
 <script src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://www.google.com/jsapi"></script> <div id="dashboard_div"> <div id="filter_div"></div> <div id="chart_div"></div> <div id="message_div"></div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM