Esri为我们提供了TiledMapServiceLayer类,这个类正是所有瓦片地图服务都必须继承的类,像ArcGISTiledMapServiceLayer,OpenStreetMapLayer,VETiledLayer等esri提供的瓦片类都是继承了该类的,所以我们要扩展该TiledMapServiceLayer类
一.调用天地图服务(SXGeoTileLayer类)
[plain]
view plain
copy
print
?
- import?com.esri.ags.SpatialReference;??
- import?com.esri.ags.geometry.Extent;??
- import?com.esri.ags.geometry.MapPoint;??
- import?com.esri.ags.layers.supportClasses.LOD;??
- import?com.esri.ags.layers.supportClasses.TileInfo;??
- import?com.esri.ags.layers.TiledMapServiceLayer;??
- import?com.esri.ags.layers.TiledMapServiceLayer;??
- ??
- import?flash.geom.Point;??
- import?flash.net.URLRequest;??
- ??
- /**??
- ?*?SXGeoTileLayer???
- ?*/??
- public?class?SXGeoTileLayer?extends?TiledMapServiceLayer??
- {??
- ?//--------------------------------------------------------------------------??
- ?//??
- ?//??Constructor??
- ?//??
- ?//--------------------------------------------------------------------------??
- ???
- ?/**??
- ??*?Creates?a?new?PortlandTiledMapServiceLayer?object.??
- ??*/??
- ?public?function?SXGeoTileLayer()??
- ?{??
- ??super();??
- ????
- ??buildTileInfo();?//?to?create?our?hardcoded?tileInfo???
- ????
- ??setLoaded(true);?//?Map?will?only?use?loaded?layers??
- ?}??
- ???
- ?//--------------------------------------------------------------------------??
- ?//??
- ?//??Variables??
- ?//??
- ?//--------------------------------------------------------------------------??
- ???
- ?private?var??wkid:int?=?4326;??
- ?private?var?_tileInfo:TileInfo?=?new?TileInfo();??//?see?buildTileInfo()???
- ?private?var?_url:String?=?new?String();??
- ?//private?var?_wmsLayer:String?=?new?String();???
- ???
- ?//--------------------------------------------------------------------------??
- ?//??
- ?//??Overridden?properties??
- ?//??????fullExtent()??
- ?//??????initialExtent()??
- ?//??????spatialReference()??
- ?//??????tileInfo()??
- ?//??????units()??
- ?//??
- ?//--------------------------------------------------------------------------??
- ???
- ???
- ?//----------------------------------??
- ?//??fullExtent??
- ?//??-?required?to?calculate?the?tiles?to?use??
- ?//----------------------------------??
- ???
- ?override?public?function?get?fullExtent():Extent??
- ?{??
- ??return?new?Extent(-180,?-90,?180,?90,?new?SpatialReference(4326));??
- ??//return?new?Extent(65.94,18.84,137.74,62.85,?new?SpatialReference(4326));??
- ?}??
- ???
- ?//----------------------------------??
- ?//??initialExtent??
- ?//??-?needed?if?Map?doesn't?have?an?extent??
- ?//----------------------------------??
- ???
- ?override?public?function?get?initialExtent():Extent??
- ?{??
- ??return?new?Extent(-124.731422,24.955967,-66.969849,?49.371735,new?SpatialReference(4326));??
- ??//return?new?Extent(112.48,47.77,112.60,47.97,?new?SpatialReference(4326));??
- ?}??
- ???
- ?//----------------------------------??
- ?//??spatialReference??
- ?//??-?needed?if?Map?doesn't?have?a?spatialReference??
- ?//----------------------------------??
- ???
- ?override?public?function?get?spatialReference():SpatialReference??
- ?{??
- ??return?new?SpatialReference(4326);??
- ?}??
- ???
- ?//----------------------------------??
- ?//??tileInfo??
- ?//----------------------------------??
- ???
- ?override?public?function?get?tileInfo():TileInfo??
- ?{?????
- ??return?_tileInfo;??
- ?}??
- ???
- ?//----------------------------------??
- ?//??units??
- ?//??-?needed?if?Map?doesn't?have?it?set??
- ?//----------------------------------??
- ???
- ?override?public?function?get?units():String??
- ?{??
- ??return?"esriDecimalDegrees";??
- ?}??
- ???
- ?//--------------------------------------------------------------------------??
- ?//??
- ?//??Overridden?methods??
- ?//??????getTileURL(level:Number,?row:Number,?col:Number):URLRequest??
- ?//??
- ?//--------------------------------------------------------------------------??
- ???
- ?override?protected?function?getTileURL(level:Number,?col:Number):URLRequest??
- ?{??
- ??var?url:String?;??
- ??url?=?_url??+?"&X="?+?col.toString()?+?"&Y="?+?row.toString()+?"&L="+?level.toString();??
- ??return?new?URLRequest(url)?;??
- ?}??
- ???
- ?//--------------------------------------------------------------------------??
- ?//??
- ?//??Private?Methods??
- ?//??
- ?//--------------------------------------------------------------------------??
- ???
- ?private?function?buildTileInfo():void??
- ?{??
- ??_tileInfo.height?=?256;??
- ??_tileInfo.width?=?256;??
- ??_tileInfo.origin?=?new?MapPoint(-180,?90);??
- ??_tileInfo.spatialReference?=?new?SpatialReference(4326);??
- ??_tileInfo.lods?=?[??????
- ???//new?LOD(0,?1.40625,?590995197.1416691),??
- ???new?LOD(1,?0.703125,?295497598.5708346),??
- ???new?LOD(2,?0.3515625,?147748799.2854173),??
- ???new?LOD(3,?0.17578125,?73874399.64270864),??
- ???new?LOD(4,?0.087890625,?36937199.82135432),??
- ???new?LOD(5,?0.0439453125,?18468599.91067716),??
- ???new?LOD(6,?0.02197265625,?9234299.95533858),??
- ?????
- ???new?LOD(7,?0.010986328125,?4617149.97766929),??
- ???new?LOD(8,?0.0054931640625,?2308574.98883465),??
- ???new?LOD(9,?0.00274658203124999,?1154287.49441732),??
- ???new?LOD(10,?0.001373291015625,?577143.747208662),??
- ???new?LOD(11,?0.0006866455078125,?288571.873604331),??
- ???new?LOD(12,?0.000343322753906249,?144285.936802165),??
- ???new?LOD(13,?0.000171661376953125,?72142.9684010827),??
- ???new?LOD(14,?0.0000858306884765626,?36071.4842005414),??
- ???new?LOD(15,?0.0000429153442382813,?18035.7421002707),??
- ???new?LOD(16,?0.0000214576721191406,?9017.87105013534),??
- ??];??
- ?}??
- ???
- ?private?function?padString(text:String,?size:int,?ch:String):String??
- ?{??
- ??while?(text.length?<?size)??
- ??{??
- ???text?=?ch?+?text;??
- ??}??
- ??return?text;??
- ?}??
- ?public?function?set?url(val:String):void??
- ?{??
- ??this._url?=?val;??
- ?}??
- }??
使用方法:
[plain]
view plain
copy
print
?
- var?wmslayer:SXGeoTileLayer=new?SXGeoTileLayer();??
- wmslayer.url="?http://tile0.tianditu.com/DataServer?T=A0610_ImgAnno";??
- map.addLayer(wmslayer);??
二.调用Google地图服务
[plain]
view plain
copy
print
?
- ??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.*;??
- ?????
- ??import?flash.net.URLRequest;??
- ?????
- ??//扩展TiledMapServiceLayer图层实现加载google地图??
- ??public?class?GoogleMapLayer?extends?TiledMapServiceLayer??
- ??{??
- ??????private?var?_tileInfo:TileInfo=new?TileInfo();??
- ??????private?var?_baseURL:String="";??
- ?????????
- ??????public?function?GoogleMapLayer()??
- ??????{??
- ??????????super();??
- ??????????buildTileInfo();??
- ??????????setLoaded(true);??
- ??????}??
- ?????????
- ??????override?public?function?get?fullExtent():Extent??
- ??????{??
- ??????????return?new?Extent(-20037508.342787,?-20037508.342787,?20037508.342787,?new?SpatialReference(102113));??
- ??????}??
- ?????????
- ??????override?public?function?get?initialExtent():Extent??
- ??????{??
- ??????????return?new?Extent(-20037508.342787,?new?SpatialReference(102113));??
- ??????}??
- ?????????
- ??????override?public?function?get?spatialReference():SpatialReference??
- ??????{??
- ??????????return?new?SpatialReference(102113);??
- ??????}??
- ?????????
- ??????override?public?function?get?tileInfo():com.esri.ags.layers.supportClasses.TileInfo??
- ??????{??
- ??????????return?_tileInfo;??
- ??????}??
- ?????????
- ??????//获取矢量地图??
- ??????override?protected?function?getTileURL(level:Number,?col:Number):URLRequest??
- ??????{??
- ??????????var?url:String=_baseURL&+??
- ??????????????"x="?+?col?+?"&"?+??
- ??????????????"y="?+?row?+?"&"?+??
- ??????????????"z="?+?level+?"&s=";??
- ?????????????
- ??????????return?new?URLRequest(url);??
- ??????}??
- ??????public?function?set?url(val:String):void??
- ??
- this._baseURL?=?val;??
- ??
- ??????private?function?buildTileInfo():void??
- ??????{??
- ??????????_tileInfo.height=256;??
- ??????????_tileInfo.width=256;??
- ??????????_tileInfo.origin=new?MapPoint(-20037508.342787,?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)??
- ??????????];??
- ??????}??
- ??}??
使用方法:
[plain]
view plain
copy
print
?
- var?wmslayer:GoogleMapLayer?=new?GoogleMapLayer();??
- wmslayer.url="http://khm2.google.com/kh/v=38&hl=zh-CN";??
- map.addLayer(wmslayer);?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|