Flex加載 ArcGIS Server發佈的切片地圖(不直接使用ArcGISTiledMapServiceLayer)

1、類
package lyrs 

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 Server extends TiledMapServiceLayer 

//成員變量 
private var _tileInfo:TileInfo = new TileInfo(); 
private var _wkid:int = 2384; 
private var _baseURL:String = "http://10.19.1.50/mapcache"; 
// private var cornerCoordinate:Number = 20037508.3427892; 
public var _mapStyle:String = "Vector"; 
private var _initialExtent:Extent; 

public function Server() 

super(); 
buildTileInfo(); // to create our hardcoded tileInfo 
setLoaded(true); // Map will only use loaded layers 


// 全屏範圍 
override public function get fullExtent():Extent 

return new Extent(483777.982548502,296808.286300247,510241.397182649,315029.660346049, new SpatialReference(_wkid)); 


// 初始化範圍 (左下角座標,右上角座標) 
override public function get initialExtent():Extent 

return new Extent(483777.982548502,296808.286300247,510241.397182649,315029.660346049, new SpatialReference(_wkid)); 


// 空間參考系 
override public function get spatialReference():SpatialReference 

return new SpatialReference(_wkid); 


override public function get tileInfo():TileInfo 

return _tileInfo; 


override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest 

var url:String = _baseURL 
+ "/L" + padString(String(level), 2, "0") 
+ "/R" + padString(row.toString(16), 8, "0") 
+ "/C" + padString(col.toString(16), 8, "0") + ".png"; 
return new URLRequest(url); 


// 自定義方法,定義地圖縮放等級 
private function buildTileInfo():void 

_tileInfo.height=512; 
_tileInfo.width=512; 
_tileInfo.origin=new MapPoint(-5123200,10002100); 
_tileInfo.spatialReference=new SpatialReference(_wkid); 
_tileInfo.lods = [ 
new LOD(0, 33.0729828126323, 125000), 
new LOD(1, 16.9333672000677, 64000), 
new LOD(2, 8.46668360003387, 32000), 
new LOD(3, 4.23334180001693, 16000), 
new LOD(4, 2.11667090000847, 8000), 
new LOD(5, 1.05833545000423, 4000), 
new LOD(6, 0.529167725002117, 2000), 
new LOD(7, 0.264583862501058, 1000), 
new LOD(8, 0.132291931250529, 500) 
]; 


private function padString(text:String, size:int, ch:String):String 

while (text.length < size) 

text = ch + text; 

return text; 


}

2、引用1
baseMap可爲esri:map組件
    var baseLayer:Server = new Server();
    baseMap.addLayer(baseLayer); 
2、引用2
 <esri:Map id="mymap" width="100%" height="100%">
  <lyrs:Server id="virtualTiles" fadeInFrameCount="12"/>
 </esri:Map>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章