ArcGISFlexSDK中关于切换地图问题(不同范围)

  最近在用ArcGIS Flex SDK开发GIS项目,在过程当中发现一个比较棘手的问题。

  需求是这样的,项目中需要对地图进行切换,并且切换的地图不是同一坐标系下的地图,而且加载地图起始中心点也不相同。这样就导致了一个问题,当重新AddLayer的时候,Map的Lods甚至Extent都是前一幅地图的配置参数。从而导致新地图的加载位置错误,造成不出图或者出白图的情况。

  其实解决这个问题的基本思路就是手动修改Map的lods和extent信息,使Map用上新添加Layer的属性。

  1.采用静态的TileInfo信息,将切换到的Tileinfo信息静态缓存下来,直接调用直接设置。但是这样有一个弊端,如果服务器配置的TileInfo信息改变,就需要从新设置静态缓存的TileInfo信息,不是很灵活。

  2.动态获取TileInfo信息,New 一个Layer的时候,Layer会自动同步TileInfo信息,当同步完成之后,获取需要设置的信息,设置给Map即可。

  代码:

  private function setLayer():void{

           newLayer = new ArcGISTiledMapServiceLayer(selectSchool.serviceUrl);

    newLayer.id = "baselayer";

    map.addLayer(newLayer);

    setLods();

  }

  private function setLods():void{
    if(newLayer.tileInfo != null){
      map.lods = newLayer.tileInfo.lods;
      map.extent = newLayer.initialExtent;
    }
    else{
      setTimeout(setLods,1000);
    }
  }

  如果ArcGISTiledMapServiceLayer能提供一个设置TileInfo后的监听,解决起来就更容易一些。

posted on 2012-06-12 13:25  太平州::裔  阅读(291)  评论(0编辑  收藏  举报