对于运营网络路测数据来说,我们通常不仅仅会通过信号扇区对他们归类,同时也有可能通过其信号等级或者其它业务属性对他们进行归类,对于大数据量的展示来说,效率成为其在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); } }
效果分别如下图所示: