在做模块的时候,会遇到很多需要解决的问题,所以把问题分散在这里写出来,以方便需要的人Google,让大家缩短解决问题的时间。
我需要将所有的图层信息,都显示在地图extend范围内,每添加一个图层数据,地图会自动缩放,把所有信息显示在可以看到的范围内。
arcgis for flex提供了GraphicUtil.getGraphicsExtent()方法,通过这个方法可以快速实现地图自动缩放功能,具体关键代码如下:
privatefunction zoomToGraphics():void
上面的部分是对单个图层的缩放,我需要是多个图层放在一起,怎么实现缩放功能。个人修改如下:
…………
myGraphicsLayer.add(imgraphic);
map.addLayer(myGraphicsLayer);
graphicarray.addAll(myGraphicsLayer.graphicProvideras IList);
layersZoomToGraphics(ind.map,graphicarray);//调用这个方法
由于我是实事通讯,所以每次只添加一个图层,自定义一个数组
graphicarray,将每次获取到得图层数据添加到这个数组中,以保存上一次图层信息。
public
functionlayersZoomToGraphics(map:Map,graphicsLayer_arr:ArrayCollection):void{
方法实现完成。
总结:只要看懂基本的方法使用,就可以根据自己想要实现的功能,进行相应的修改,我的方法不是最好,仅供参考。
{
var graphicProvider:ArrayCollection =myGraphicsLayer.graphicProvider as ArrayCollection;
var graphicsExtent:Extent =GraphicUtil.getGraphicsExtent(graphicProvider.toArray());
if (graphicsExtent)
{
myMap.extent = graphicsExtent;
// make sure the whole extent is visible
if (!myMap.extent.contains(graphicsExtent))
{
myMap.level--;
}
}
}
其中
myGraphicsLayer是自定义的图层,
myGraphicsLayer.graphicProvider这是自带的方法,存有图层上的数据,这样就可以简单获取到图层上的数据。
var graphicsExtent:Extent =GraphicUtil.getGraphicsExtent(graphicsLayer_arr.toArray());
if(graphicsExtent){
map.extent = graphicsExtent;
if (!map.extent.contains(graphicsExtent)){
map.level--;
}
}
}
![地图自动缩放功能实现 <wbr>arcgis <wbr>for <wbr>flex 地图自动缩放功能实现 <wbr>arcgis <wbr>for <wbr>flex](https://i-blog.csdnimg.cn/blog_migrate/32bfa4973109faccaf4fb53f72a2fdb3.jpeg)