无法在infowindow google maps api(v3)

时间:2017-10-11 08:11:43

标签: javascript json google-maps google-maps-api-3 amcharts

我想在infowindow google地图中显示amcharts,但我的图表无法在infowindow中循环数据。 如果我单击标记1数据比率不能显示并单击标记2数据比率标记1可以显示,但标记2不能显示。

Codepen.io My Code

如何显示与标记相同的数据信息。

1 个答案:

答案 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();
      })

Updated codepen