Flex读取离线地图CacheMap
发布时间:2020-12-15 04:03:51 所属栏目:百科 来源:网络整理
导读:package com{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.la
package com { 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.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; public class CacheMap extends TiledMapServiceLayer { public var _baseURL:String=""; public var _fullextent:String=""; public var _initextent:String=""; [Bindable] private var xmlList:XMLList; public function CacheMap() { super(); } private function iniParam():void { buildTileInfo(); setLoaded(true); } private var _tileInfo:TileInfo=new TileInfo(); /*读取conf.xml文件*/ [Bindable] private var datas:XML=new XML(); private var tileCols:Number; private var tileRows:Number; private var tileOriginX:Number; private var tileOriginY:Number; private var lodInfo:Array=[]; public function getXml():void { var url:URLRequest=new URLRequest(_baseURL + "/conf.xml"); var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE,onComplete); loader.load(url); } private function onComplete(event:Event):void { var result:URLLoader=URLLoader(event.target); datas=XML(result.data); tileCols=Number(datas.TileCacheInfo.TileCols); tileRows=Number(datas.TileCacheInfo.TileRows); tileOriginX=Number(datas.TileCacheInfo.TileOrigin.X); tileOriginY=Number(datas.TileCacheInfo.TileOrigin.Y); var lodInfoArr:XMLList=datas.TileCacheInfo.LODInfos.LODInfo; _tileInfo.lods=[]; for (var i:int=0; i < lodInfoArr.length(); i++) { var xmlObj:XML=lodInfoArr[i]; var lodObj:LOD=new LOD(xmlObj.LevelID,xmlObj.Resolution,xmlObj.Scale); _tileInfo.lods.push(lodObj); } iniParam(); } override public function get fullExtent():Extent { var fullExtentArr:Array=_fullextent.split(","); return new Extent(Number(fullExtentArr[0]),Number(fullExtentArr[1]),Number(fullExtentArr[2]),Number(fullExtentArr[3]),new SpatialReference(4326)); } override public function get initialExtent():Extent { var initExtentArr:Array=_initextent.split(","); return new Extent(Number(initExtentArr[0]),Number(initExtentArr[1]),Number(initExtentArr[2]),Number(initExtentArr[3]),new SpatialReference(4326)); } override public function get spatialReference():SpatialReference { return new SpatialReference(4326); } override public function get tileInfo():TileInfo { return _tileInfo; } /*override public function get units():String { return "esriDecimalDegrees"; }*/ override protected function getTileURL(level:Number,row:Number,col:Number):URLRequest { var url:String=_baseURL + "/_alllayers" + "/L" + padString(String(level),2,"0") + "/R" + padString(row.toString(16),8,"0") + "/C" + padString(col.toString(16),"0") + ".png"; return new URLRequest(url); } private function buildTileInfo():void { _tileInfo.height=tileCols; _tileInfo.width=tileRows; _tileInfo.origin=new MapPoint(tileOriginX,tileOriginY); _tileInfo.spatialReference=new SpatialReference(4326); } private function padString(text:String,size:int,ch:String):String { while (text.length < size) { text=ch + text; } return text; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |