原创arcgis server flex 实现在地图上绘制折线图,效果图:
代码:利用arcgis的infosysbol 用LineChart来渲染,数据从Graphic的attributes来进行传递
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="infosymbol" creationComplete="application1_creationCompleteHandler(event)" xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Style>
.RightStyle
{
borderThickness: 1;
info-placement:center;
borderColor: #000005;
backgroundColor: #ffffff;
paddingLeft: 5;
paddingRight: 5;
paddingTop: 5;
paddingBottom: 5;
border-alpha:0;
background-alpha:0;
}
</fx:Style>
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.utils.WebMercatorUtil;
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
[Bindable]
private var valueAC:ArrayCollection = new ArrayCollection( [
{ hour: "1", value: 1500 },
{ hour: "2", value: 200 },
{ hour: "3", value: 500 },
{ hour: "4", value: 1200 },
{ hour: "5", value: 575 } ]);
[Bindable]
private var valueAC2:ArrayCollection = new ArrayCollection( [
{ hour: "1", value: 1000 },
{ hour: "2", value: 500 },
{ hour: "3", value: 700 },
{ hour: "4", value: 1200 },
{ hour: "5", value: 300 } ]);
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
map.extent=WebMercatorUtil.geographicToWebMercator(extent) as Extent;
darwPointPloygon();
}
private function darwPointPloygon():void
{
var point:XML;
for each(point in points) {
var mp:MapPoint=WebMercatorUtil.geographicToWebMercator(new MapPoint([email protected],[email protected])) as MapPoint;
var myAttributes:Object = {};
[email protected];
myAttributes.datap=valueAC;
if([email protected]=="point2" || [email protected]=="point4"){
myAttributes.datap=valueAC2;
}
var infosys:InfoSymbol=new InfoSymbol();
infosys.containerStyleName="RightStyle";
infosys.infoRenderer=myInfoSymbol.infoRenderer;
var g:Graphic = new Graphic(mp, infosys, myAttributes);
infoPointglayer.add(g);
}
}
]]>
</fx:Script>
<fx:Declarations>
<fx:XMLList id="points">
<point text="point1" x="118" y="26" />
<point text="point2" x="116" y="30" />
<point text="point3" x="113" y="25" />
<point text="point4" x="105" y="22" />
</fx:XMLList>
<esri:InfoSymbol id="myInfoSymbol">
<esri:infoRenderer>
<fx:Component>
<s:DataRenderer>
<mx:LineChart id="linechart" height="100" width="100"
paddingLeft="5" paddingRight="5"
showDataTips="true" dataProvider="{data.datap}">
<!--categoryField:横坐标数据节点-->
<mx:horizontalAxis>
<mx:CategoryAxis id="h1"
categoryField="hour" />
</mx:horizontalAxis>
<!--yField:纵坐标数据节点-->
<mx:series>
<!--纵坐标轴1-->
<mx:LineSeries id="cs1" horizontalAxis="{h1}" form="curve" yField="value" displayName="时间(h)/降水量(MM)">
<mx:lineStroke>
<mx:SolidColorStroke id = "s2" color="blue" weight="2"/>
</mx:lineStroke>
</mx:LineSeries>
</mx:series>
</mx:LineChart>
</s:DataRenderer>
</fx:Component>
</esri:infoRenderer>
</esri:InfoSymbol>
<esri:Extent id="extent" xmin="27.25" ymin="59.01" xmax="174.38" ymax="-2.07">
<esri:SpatialReference wkid="4326"/>
</esri:Extent>
</fx:Declarations>
<esri:Map id="map" level="4">
<esri:ArcGISTiledMapServiceLayer url="http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineStreetColor/MapServer"/>
<esri:GraphicsLayer id="infoPointglayer" />
</esri:Map>
</s:Application>