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;
}
}
}
{
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>