FlexViewer地图范围的自动缩放

 

      前段时间在FlexViewer框架上做点东西,有一个功能是根据多边形范围,让地图自动缩放。当时我的做法是根据polygon的x、y的最大最小值生成一个extent,然后map. extent=extent.expand(2);后来发现其实有一个更简单的办法。在FlexViewer中有一个UtilsClass的as文件,文件中有一个UtilsClass类,类中有zoomToGraphics这个静态方法,zoomToGraphics(map:Map,graphicsLayer_num:GraphicsLayer);两个参数的map,如果你的组件是基于basewidget的那么第一个参数直接写map就行,graphicsLayer_num就是存在你需要根据的点、线、面自动缩放图层;graphicsLayer_num图层的graphic对象可以是点线面,这样就可以根据你输入的图层上的graphics实现地图的缩放。

      由于后来需要根据多个graphicsLayer确定范围,我又在UtilsClass类添加了对zoomToGraphics方法进行修改,增加了一个新的方法layersZoomToGraphics。

        public static function layersZoomToGraphics(map:Map,graphicsLayer_arr:ArrayCollection):void{
   var graphicsProvider:ArrayCollection=new ArrayCollection;
   for(var i:int=0;i<graphicsLayer_arr.length;i++){
   
    var graphicsLayer:GraphicsLayer=graphicsLayer_arr[i] as GraphicsLayer;
    graphicsProvider.addAll(graphicsLayer.graphicProvider as ArrayCollection);
   }
    var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(graphicsProvider.toArray());
    if(graphicsExtent){
     map.extent = graphicsExtent;
     if (!map.extent.contains(graphicsExtent)){
      map.level--;
     }
    }
  }

该方法的第二个参数graphicsLayer_arr是一个存放着graphicsLayer的ArrayCollection。再调用该方法时,需要先把需要的graphicsLayer放到一个数组中。

flexbuilder中快捷键Ctrl+Shift+D+R可以输入文件的文字打开文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值