新建Flex项目“RiverMapServerSample For Flex”,并添加“agslib”,如下图。
添加一个web墨卡托投影的瓦片服务图层“RiverMapLayer”,部分源码如下图。
package com.esri.ags.flex.sample
{
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;
//扩展水经注地图
public class RiverMapLayer extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo = new TileInfo();
private var _baseURL:String="";
public function RiverMapLayer()
{
super();
buildTileInfo();
setLoaded(true);
}
public function set baseURL(baseurl:String):void
{
_baseURL = baseurl;
}
override public function get fullExtent():Extent
{
return new Extent(-18935696.6943223, -20037508.342787,18935696.6943223, 20037508.342787, new SpatialReference(102113));
}
override public function get initialExtent():Extent
{
return new Extent(-18935696.6943223, -20037508.342787, 18935696.6943223, 20037508.342787, new SpatialReference(102113));
}
override public function get spatialReference():SpatialReference
{
return new SpatialReference(102113);
}
override public function get tileInfo():TileInfo
{
return _tileInfo;
}
//获取地图
override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest
{
var a:String= (col+1).toString(10);
var b:String=(row+1).toString(10);
var c:String= (level+1).toString(10);
var url:String=_baseURL + "x=" + a + "&" + "y=" + b + "&" + "z=" + c;
return new URLRequest(url);
}
private function buildTileInfo():void
{
_tileInfo.height=256;
_tileInfo.width=256;
_tileInfo.origin=new MapPoint(-18935696.6943223, 20037508.342787);
_tileInfo.spatialReference=new SpatialReference(102113);
_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)
];
}
}
}
在主界面“RiverMapServerSampleForFlex.mxml”中添加esri的map标签,并引用刚刚新建的“RiverMapLayer”,如下图所示。