假设存在一个应用程序,其中您有多个不同的视图,每个视图都包含多个相同类型的图形。
我的问题是,每次创建新图表时是否需要加载可视化 API,如本示例http://code.google.com/p/gwt-google-apis/wiki/VisualizationGettingStarted所示,或者如果我加载一次可视化,我是否不再需要创建一个 Runnable 来等待加载可视化以便显示数据?
假设存在一个应用程序,其中您有多个不同的视图,每个视图都包含多个相同类型的图形。
我的问题是,每次创建新图表时是否需要加载可视化 API,如本示例http://code.google.com/p/gwt-google-apis/wiki/VisualizationGettingStarted所示,或者如果我加载一次可视化,我是否不再需要创建一个 Runnable 来等待加载可视化以便显示数据?
是的,我们不能离线使用 Google Charts。
由于我们无法将 Google Visualization api 下载到我们的本地机器,我们必须动态加载它们。
可运行的方式
Runnable onLoadCallback = new Runnable() {
public void run()
{
PieChart pie = new PieChart(createTable(result), createOptions());
pie.addSelectHandler(createSelectHandler(pie));
dataCHTabel.clear();
dataCHTabel.add(pie);
}
};
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
新的可视化 API 加载方式:
不推荐使用上述行,加载所有图表的新方法是
VisualizationUtils.loadVisualizationApi(onLoadCallback, CoreChart.PACKAGE);
通过在应用加载时加载所有包
通过在我的主机页面上添加以下代码(appname.html
)
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {'packages' : ["corechart"] });
</script>
corechart 包包括新版本的区域、条形、列、线、饼图和散点图可视化的代码,这些可视化以前由单独的包加载。
进而
PieChart pie = new PieChart(createTable(result), createOptions());
pie.addSelectHandler(createSelectHandler(pie));
dataCHTabel.clear();
dataCHTabel.add(pie);
geochart 不包含在核心中所以,如果你想加载地理图表,你必须添加
google.load('visualization', '1', {'packages': ['geochart']});