2017-10-11 78 views
0

中顯示與標記相同的數據我想在infowindow谷歌地圖中顯示amcharts,但我的圖表無法循環infowindow中的數據。 如果我點擊標記1數據比例不能顯示並點擊標記2數據比例標記1可以顯示,但標記2不能顯示。無法在infowindow Google地圖api(v3)

Codepen.ioMy Code

如何顯示數據信息窗口相同帶有標記。

回答

0

AmChart的makeChart方法要求在第一個參數中指定的ID存在於DOM中,否則它將不起作用。您在信息窗口甚至附加到DOM之前調用initAmCharts,因此您需要在infowindow中添加一個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

+0

@xorsparkI曾經嘗試過,但如何關閉自動映射如果domready中UB事件點擊? 我試圖刪除這個 infowindow.setContent(infowindowChart); infowindow.open(marker.getMap(),marker); }); // end_marker_listener google.maps.event.addListener(信息窗口, '關閉',函數(){ chartLine.clear(); chartWa.clear();} ) 以及與此替換 infowindow.close(); infowindow.setContent(infowindowChart); infowindow.open(marker.getMap(),marker); }); 但不工作 –

+0

我不確定你想問什麼。你能發佈一個更好地解釋問題的代碼嗎? – xorspark

相關問題