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可以输入文件的文字打开文件。

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...