ArcGISServer Flex API 内嵌饼状图

来源:互联网 发布:淘宝有哪些好吃的零食 编辑:程序博客网 时间:2024/05/29 02:48

InfoSymbol符号内嵌PieChart控件,饼图的dataProvider属性绑定的是{data.thematic},它代表的其实就是Graphic对象的attributes属性的thematic对象,InfoSymbol中的data代表的就是其对应的Graphic对象的attributes属性。

         <fx:Declarations>

                 <!--将非可视元素(例如服务、值对象)放在此处 -->               

                 <esri:InfoSymbolid="infoSymbol" infoPlacement="center" >

                         <esri:infoRenderer>

                                  <fx:Component>

                                           <s:ItemRenderer>                                      

                                                    <mx:PieChartshowDataTips="true" width="150" height="150"dataProvider="{data.thematic}">

                                                            <mx:series>

                                                                     <mx:PieSeriesfield="value" displayName="数值" nameField="item"/>

                                                            </mx:series>

                                                    </mx:PieChart>

                                           </s:ItemRenderer>

                                  </fx:Component>

                         </esri:infoRenderer>

                 </esri:InfoSymbol>

         </fx:Declarations>

 

注意:要将PieChart控件嵌入到s:ItemRenderer中,否则会提示data属性未定义

 

查询得到的Graphic中取出要显示在饼图中的属性值(如:p2009p2010p2011,组合成包含itemvalue两字段的对象存放在ArrayCollection中,其中itemvalue用于PieChartPieSeries绑定,最后将这个ArrayCollection设置给Graphic.attributes.thematic

 

                                           foreach( var gra:Graphic in featureSet.features)

                                           {

                                                    varppoint:MapPoint = gra.geometry as MapPoint;

                                                    varmp:MapPoint = new MapPoint(ppoint.x,ppoint.y);

                                                    varg:Graphic = new Graphic(mp);

                                                    g.attributes= new Object();

                                                    varthematic:ArrayCollection = new ArrayCollection( [                                            

                                                            {item: "项目1", value: gra.attributes["p2009"] },

                                                            {item: "项目2", value: gra.attributes["p2010"] },

                                                            {item: "项目3", value: gra.attributes["p2011"] } ]);

                                                    g.attributes.thematic= thematic;

                                                    templyr.add(g); 

                                           }