当前位置: 代码迷 >> Web前端 >> 网络营业路测数据展示技术之同色及混合的聚合
  详细解决方案

网络营业路测数据展示技术之同色及混合的聚合

热度:133   发布时间:2012-11-06 14:07:00.0
网络运营路测数据展示技术之同色及混合的聚合

对于运营网络路测数据来说,我们通常不仅仅会通过信号扇区对他们归类,同时也有可能通过其信号等级或者其它业务属性对他们进行归类,对于大数据量的展示来说,效率成为其在Web端运用需要考虑的一个重要因素,所以我们需要用到聚合。

在此通过扩展,我们对期路测点分为六类,每类赋予不同的颜色进行渲染,在此我们把它称为同色聚合。

当比例尺放大到一定等级之后,为了更好的展示数据,我们需要对他们一起聚合,也就是我们常说的常规聚合,在此我们称为混合聚合!

代码分别:

private var pointArr:ArrayCollection=new ArrayCollection();	
			private var redpointArr:ArrayCollection=new ArrayCollection();	
			private var pinkpointArr:ArrayCollection=new ArrayCollection();	
			private var yellowpointArr:ArrayCollection=new ArrayCollection();	
			private var bluepointArr:ArrayCollection=new ArrayCollection();	
			private var bluegreenpointArr:ArrayCollection=new ArrayCollection();
			private var greenpointArr:ArrayCollection=new ArrayCollection();	
			//private var wnmspointArr:ArrayCollection=new ArrayCollection();	
			private var arr:Array = new Array();
			private var points4326:ArrayCollection=new ArrayCollection();

protected function map1_extentChangeHandler(event:ExtentEvent):void
			{
				
				if(MyMap.scale<15000)
				{
					redGraphicLayer.graphicProvider=null;
					pinkGraphicLayer.graphicProvider=null;
					yellowGraphicLayer.graphicProvider=null;
					blueGraphicLayer.graphicProvider=null;
					bluegreenGraphicLayer.graphicProvider=null;
					greenGraphicLayer.graphicProvider=null;
					myGraphicLayer.graphicProvider=pointArr;
				}
				else
				{
					myGraphicLayer.graphicProvider=null;					
					redGraphicLayer.graphicProvider=redpointArr;
					pinkGraphicLayer.graphicProvider=pinkpointArr;
					yellowGraphicLayer.graphicProvider=yellowpointArr;
					blueGraphicLayer.graphicProvider=bluepointArr;
					bluegreenGraphicLayer.graphicProvider=bluegreenpointArr;
					greenGraphicLayer.graphicProvider=greenpointArr;
				}
				
				
			}	


//坐标数组投影完成事件
			private function projectCompleteHandler(event:GeometryServiceEvent):void
			{
				try
				{
					// Note: 投影后的结果数据
					var myPoints3857:Array = (event.result as Array);					
				}
				catch (error:Error)
				{
					Alert.show(error.toString());
				}
				
				for(var i:int=0;i<arr.length;i++){
					//var myPoint:MapPoint = new MapPoint(arr[i].longitude, arr[i].latitude,new SpatialReference(3857));
					
					//var myPoint:MapPoint = new MapPoint(obj.x,obj.y);
					//trace("x-->" + myPoint.x);
					//trace("y-->" + myPoint.y);
					var myPoint:MapPoint=myPoints3857[i] as MapPoint;
					var myGraphic:Graphic=null
					//trace("state == " + arr[i].state);
					//switch(arr[i].state){
					if(arr[i].state >= 0 && arr[i].state < 0.5)
					{
						//trace("state1 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xf70a0a),null);
						redpointArr.addItem(myGraphic);
					}
					else if(arr[i].state >= 0.5 && arr[i].state < 1.5)
					{
						//trace("state2 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xff5a02),null);
						pinkpointArr.addItem(myGraphic);
					}
					else if(arr[i].state >= 1.5 && arr[i].state < 2.5 )
					{
						//trace("state3 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xef9212),null);
						yellowpointArr.addItem(myGraphic);
					}
					else if(arr[i].state >= 2.5 && arr[i].state < 3.5 )
					{
						//trace("state4 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xffc600),null);
						bluepointArr.addItem(myGraphic);
					}
					else if(arr[i].state >= 3.5 && arr[i].state < 4.5){
						//trace("state5 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xb1de55),null);
						bluegreenpointArr.addItem(myGraphic);
					}
					else if(arr[i].state >= 4.5){
						//trace("state6 == " + arr[i].state);
						myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0x46df23),null);
						greenpointArr.addItem(myGraphic);
					}
					//}
					pointArr.addItem(myGraphic);
				}
				
				
			}

效果分别如下图所示:





  相关解决方案