// ActionScript file ? package samples { ??? ??? import com.esri.ags.SpatialReference; ??? import com.esri.ags.geometry.Extent; ??? import com.esri.ags.geometry.MapPoint; ??? import com.esri.ags.layers.TiledMapServiceLayer; ??? import com.esri.ags.layers.supportClasses.LOD; ??? import com.esri.ags.layers.supportClasses.TileInfo; ??? ??? import flash.net.URLRequest; ??? ??? import flashx.textLayout.formats.Float; ??? ??? import mx.controls.Alert; ??? ??? public class BaiduTiledMapServiceLayer extends TiledMapServiceLayer ??? { ??????? //成员变量 ??????? private var _tileInfo:TileInfo = new TileInfo();// see buildTileInfo() ??????? private var _wkid:int = 102100;//102113;//102100; ??????? private var leftcorner:Number=0.0; ??????? private var cornerCoordinate:Number = 20037508.3427892; ??????? private var _mapType:String = "Image"; ??????? ??????? ??? ??? public function BaiduTiledMapServiceLayer() ??????? { ??????????? super(); ??????????? ??????????? buildTileInfo(); // to create our hardcoded tileInfo ??????????? ??????????? setLoaded(true);// Map will only use loaded layers ??????? } ??????? ??????? //---------------------------------- ??????? //? 全屏范围 ??????? //? - required to calculate the tiles to use ??????? //---------------------------------- ??????? override public function get fullExtent():Extent ??????? { ??????????? return new Extent(-cornerCoordinate,-cornerCoordinate,cornerCoordinate,new SpatialReference(_wkid)); ??????? } ??????? ??????? //---------------------------------- ??????? //? 初始化范围 ??????? //? - needed if Map doesn't have an extent ??????? //---------------------------------- ??????? ??????? override public function get initialExtent():Extent ??????? { ??????????? return new Extent(-cornerCoordinate,new SpatialReference(_wkid)); ??????? } ??????? ??????? //---------------------------------- ??????? //? 空间参考系 ??????? //? - needed if Map doesn't have a spatialReference ??????? //---------------------------------- ??????? override public function get spatialReference():SpatialReference ??????? { ??????????? return new SpatialReference(_wkid); ??????? } ??????? ??????? //---------------------------------- ??????? //? tileInfo ??????? //---------------------------------- ??????? override public function get tileInfo():TileInfo ??????? { ??????????? return _tileInfo; ??????? } ??????? ??????? public function set mapType(strMapType:String):void ??????? { ??????????? this._mapType = strMapType; ??????? } ??????? ??????? public function get mapType():String ??????? { ??????????? return this._mapType; ??????? } ??????????????? //-------------------------------------------------------------------------- ??????? // ??????? //? 关键方法,用于读取服务器上的缓存图片 ??????? //????? getTileURL(level:Number,row:Number,col:Number):URLRequest ??????? // ??????? //-------------------------------------------------------------------------- ??????? override protected function getTileURL(level:Number,col:Number):URLRequest ??????? { ??????????? ??????????? var zoom:int = level - 1; ??????????? var offsetX:int = Math.pow(2,zoom)as int; ??????????? var offsetY:int = offsetX - 1; ??????????? ??????????? var numX:int = col - offsetX; ??????????? var numY:int = (-row) + offsetY; ??????????? ??????????? zoom = level + 1; ??????????? var num:int = (col + row) % 8 + 1; ??????????? ??????????? ??????????? var url:String =null; ??????????? if (mapType =="Map") ??????????? { ??????????????? url = "http://q" + num +".baidu.com/it/u=x=" + numX +";y=" + numY +";z=" + zoom +";v=009;type=web&fm=44"; ??????????? } ??????????? else if (mapType == "Image") ??????????? { ??????????????? url = "http://q"+num+".baidu.com/it/u=x="+numX+";y="+numY+";z="+zoom+";v=009;type=sate&fm=46"; ??????????? } ??????????? else if (mapType == "POI") ??????????? { ??????????????? url = "http://q"+num+".baidu.com/it/u=x="+numX+";y="+numY+";z="+zoom+";v=009;type=trans&fm=47"; ??????????? } ??????????? return new URLRequest(url); ??????? } ??????? ??????? //-------------------------------------------------------------------------- ??????? // ??????? //? 自定义方法,定义地图缩放等级 ??????? // ??????? //-------------------------------------------------------------------------- ??????? private function buildTileInfo():void ??????? { ??????????? _tileInfo.height=256; ??????????? _tileInfo.width=256; ??????????? _tileInfo.origin=new MapPoint(-cornerCoordinate,cornerCoordinate); ??????????? _tileInfo.spatialReference=new SpatialReference(_wkid); ??????????? ??????????? _tileInfo.lods = [ ??????????????? new LOD(0,156543.033928,591657527.591555), ??????????????? new LOD(1,78271.5169639999,295828763.795777), ??????????????? new LOD(2,39135.7584820001,147914381.897889), ??????????????? new LOD(3,19567.8792409999,73957190.948944), ??????????????? new LOD(4,9783.93962049996,36978595.474472), ??????????????? new LOD(5,4891.96981024998,18489297.737236), ??????????????? new LOD(6,2445.98490512499,9244648.868618), ??????????????? new LOD(7,1222.99245256249,4622324.434309), ??????????????? new LOD(8,611.49622628138,2311162.217155), ??????????????? new LOD(9,305.748113140558,1155581.108577), ??????????????? new LOD(10,152.874056570411,577790.554289), ??????????????? new LOD(11,76.4370282850732,288895.277144), ??????????????? new LOD(12,38.2185141425366,144447.638572), ??????????????? new LOD(13,19.1092570712683,72223.819286), ??????????????? new LOD(14,9.55462853563415,36111.909643), ??????????????? new LOD(15,4.77731426794937,18055.954822), ??????????????? new LOD(16,2.38865713397468,9027.977411), ??????????????? new LOD(17,1.19432856685505,4513.988705), ??????????????? new LOD(18,0.597164283559817,2256.994353), ??????????????? new LOD(19,0.298582141647617,1128.497176) ??????????? ]; ??????? } ??????? ??? } } |