ArcGIS Server Felx API接入E都市三维地图

本文详细介绍了如何通过ArcGIS Server Flex API将E都市的三维地图接入到应用程序中,采用切片加载方式进行优化,确保地图在不同城市位置的正确显示且互不覆盖。具体代码示例展示了如何构建地图服务层,实现地图数据的高效接入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArcGIS Server Felx API接入E都市三维地图

(本实例只是个人兴趣研究,如果想要应用到商业用途,请联系相关厂家)

通过HttpWatch工具查看E都市网站加载三维地图的方式及原理,能够观察到其加载的方式是通过切片的方式进行加载,但不同城市的地址不一样,需要根据实际情况调整切片加载的位置保证其在实际的位置,而且相互之间不压盖。观察每幅切片的加载地址,推测出其加载的算法,继承ArcGIS ServerFlex APITiledMapServiceLayer类,实现E都市地图服务数据的接入。具体代码如下:

packagecom.esri.viewer.components.common.edushi

{

importcom.esri.ags.SpatialReference;

importcom.esri.ags.geometry.Extent;

importcom.esri.ags.geometry.MapPoint;

importcom.esri.ags.layers.TiledMapServiceLayer;

importcom.esri.ags.layers.supportClasses.LOD;

importcom.esri.ags.layers.supportClasses.TileInfo;

importflash.net.URLRequest;

importflashx.textLayout.formats.Float;

public classEdushiTiledMapServiceLayer extends TiledMapServiceLayer

{

private var_tileInfo:TileInfo = new TileInfo();

private var_wkid:int = 102100;

private varcornerCoordinate:Number = 20037508.342787;

public functionEdushiTiledMapServiceLayer()

{

super();

buildTileInfo();

setLoaded(true);

}

override publicfunction get fullExtent():Extent

{

return newExtent(-cornerCoordinate, -cornerCoordinate, cornerCoordinate,cornerCoordinate, new SpatialReference(_wkid));

}

override publicfunction get initialExtent():Extent

{

return newExtent(-cornerCoordinate, -cornerCoordinate, cornerCoordinate, cornerCoordinate,new SpatialReference(_wkid));

}

override publicfunction get spatialReference():SpatialReference

{

return newSpatialReference(_wkid);

}

override publicfunction get tileInfo():TileInfo

{

return_tileInfo;

}

overrideprotected function getTileURL(level:Number, row:Number, col:Number):URLRequest

{

var url:String =“”;

var num:Number =10-level;

if (num == 3)

{

url =“http://cpic2.edushi.com/cn/beijing/zh-chs/mappic/png” + (num) + “/” + (col-20)+ “,” + (row-20) + “.png”;

}

else if (num ==2)

{

url =“http://cpic2.edushi.com/cn/beijing/zh-chs/mappic/png” + (num) + “/” + (col-40)+ “,” + (row-40) + “.png”;

}

else if (num ==1)

{

url =“http://cpic2.edushi.com/cn/beijing/zh-chs/mappic/png” + (num) + “/” + (col-80)+ “,” + (row-80) + “.png”;

}

 

return newURLRequest(url);

}

private functionbuildTileInfo():void

{

_tileInfo.height=256;

_tileInfo.width=256;

_tileInfo.origin=newMapPoint(-cornerCoordinate, cornerCoordinate);

_tileInfo.spatialReference=newSpatialReference(_wkid);

_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)

];

}

}

 

}

 

加载方式:

varpEdushiTiledMapServiceLayer: EdushiTiledMapServiceLayer = newEdushiTiledMapServiceLayer();

 

map.addLayer(_pEdushiTiledMapServiceLayer,-1);

 

运行结果如下:

以上实现了ArcGIS Server Flex API接入E都市三维地图的功能。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值