加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FlexViewer地图范围的自动缩放

发布时间:2020-12-15 05:17:56 所属栏目:百科 来源:网络整理
导读:? ????? 前段时间在FlexViewer框架上做点东西,有一个功能是根据多边形范围,让地图自动缩放。当时我的做法是根据polygon的x、y的最大最小值生成一个extent,然后map. extent=extent.expand(2);后来发现其实有一个更简单的办法。在FlexViewer中有一个UtilsCl
?

????? 前段时间在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可以输入文件的文字打开文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读