メソッドでは、最初のパラメータで指定されたIDがDOMに存在する必要があります。そうでないと機能しません。情報ウィンドウがDOMにアタッチされる前にinitAmChartsを呼び出すので、インフォボックスにdomready
リスナーを追加し、そこにmakeChart
を呼び出す必要があります。また、リソースを節約するためにclose
リスナーを添付してグラフインスタンスをクリアすることもできますが、domready
イベント中にチャートデータをクローンして、clearが完全に削除しないようにする必要があります。
データを保存しているときにグラフを追加および消去するコードは次のとおりです。私は、彼らが冗長に思えたとしてシフトを呼び出して削除しても、情報ウィンドウを再オープンするときにチャートを破った:
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
@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); }); しかし、動作していません –
私はあなたが何を求めようとしているのか分かりません。問題をより詳しく説明できるコードペインを投稿できますか? – xorspark