我想在infowindow google地图中显示amcharts,但我的图表无法在infowindow中循环数据。 如果我单击标记1数据比率不能显示并单击标记2数据比率标记1可以显示,但标记2不能显示。
Codepen.io My Code
如何显示与标记相同的数据信息。
答案 0 :(得分:0)
AmChart的makeChart
方法要求第一个参数中指定的ID存在于DOM中,否则它将无法工作。您甚至在信息窗口附加到DOM之前调用initAmCharts,因此您需要向信息窗口添加domready
侦听器并在那里调用makeChart
。您还希望附加close
侦听器以清除图表实例以节省资源,但是您需要在domready
事件期间克隆图表数据,以便明确不会删除它们。
这是在保留数据的同时添加和清除图表的代码。我删除了转移呼叫,因为它们似乎是多余的,并且在重新打开信息窗时也打破了图表:
var chartLine;
var chartWa;
google.maps.event.addListener(infowindow, 'domready', function() {
var line_data_copy = JSON.parse(JSON.stringify(item.line_data_chart));
var wa_data_copy = JSON.parse(JSON.stringify(item.wa_data_chart));
chartLine = initAmChart("divChartLine", colors_line, line_data_copy);
chartWa = initAmChart("divChartWa", colors_wa, wa_data_copy);
chartLine.allLabels[0].text = item.line_ratio+"%";
chartLine.validateData();
chartWa.allLabels[0].text = item.wa_ratio+"%";
chartWa.validateData();
});
google.maps.event.addListener(infowindow, 'close', function() {
chartLine.clear();
chartWa.clear();
})