我使用dojo 1.7(内置于我正在使用的Esri API中)在地图弹出窗口(在用户点击地图时触发)动态创建图表。
var c = dojo.create("div", {
id: "demoChart"
}, dojo.create('div'));
设置图表属性(数据,主题等)后,如果我调用chart.render
,图表会正确呈现,但尺寸错误(对于infoWindow容器div来说太大)。
但是,如果我调用chart.resize(175, 145)
,图表确实会以正确的大小创建,但不会在第一次点击时创建,而是第二次点击。
要复制see this JSFiddle,请参阅Javascript中的第49-53行。
map.infoWindow.setContent(c);
// Chart Resize will resize the DIV as needed.
// However, the initial click will not show the chart
chart.resize(175, 145);
// Chart Render shows the chart on first click, but does not resize the div
//chart.render();
我的印象是resize方法包括在其中调用render。因此,我不太清楚为什么我会这样做。
我需要知道需要改变什么才能创建与它所在的父div相同大小的图表div。
答案 0 :(得分:1)
图表以默认大小(400 x 300px)呈现的原因是图表节点(div#demoChart)没有任何尺寸。
此外,在图表节点div可见之前,它将不具有要使用的图表的任何实际尺寸(仅样式尺寸)。然后它回落到默认大小300 x 400px。
使您的代码有效:
为div添加css样式
#demoChart {
width: 175px;
height: 145px;
}
显示信息窗口后,创建图表,图表节点实际可见。图表在实例化时(在构造函数()方法中获取它的尺寸,而不是像你期望的那样在render()方法中获得)。
我已经编辑了你的JSfiddle以使它工作(view JSfiddle)。