ArcGIS Server Flex API连接Googlemap

ArcGIS Server Flex API连接Googlemap

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

 

ArcGIS Server Flex API连接Googlemap的地图数据,原理是通过访问Googlemap地图服务的切片数据,重载ArcGIS ServerFelx APITiledMapServiceLayer接口类,主要实现了对于Googlemap影像切片数据、道路等POI切片数据和矢量切片数据的接入。

 

 

以下为实现的完整代码

package com.esri.viewer.components.extensionMaps

{

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;

 

//扩展TiledMapServiceLayer图层实现加载google地图

public classGoogleMapLayer extends TiledMapServiceLayer

{

private var_tileInfo:TileInfo = new TileInfo();

private var _baseURL:String=”";

private var_initialExtent:Extent;

private var_wkid:int = 102113;

 

public varmapType:String=”Map”;

 

public functionGoogleMapLayer(initialExtent:Extent)

{

super();

 

_initialExtent =initialExtent;

 

buildTileInfo();

setLoaded(true);

}

 

override publicfunction get fullExtent():Extent

{

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

}

 

override publicfunction get initialExtent():Extent

{

if(_initialExtent)

return_initialExtent;

 

returnfullExtent;

}

 

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 s:String =“Galileo”.substring(0, ((3 * x + y) % 8));

var url:String;

//获取矢量地图

if(mapType ==“Map”)

{

url =“http://mt”+(col%4)+”.google.cn/vt/lyrs=m@158000000&hl=zh-CN&gl=cn&”+

“x=” + col +“&” +

“y=” + row +“&” +

“z=” + level+“&” +

“s=” + s;

}

else if(mapType== “Image”)//获取影像地图

{

url =“http://mt”+(col%4)+”.google.cn/vt/lyrs=s@101&hl=zh-CN&gl=cn&” +

“x=” + col +“&” +

“y=” + row +“&” +

“z=” + level+“&” +

“s=” + s;

}

else if(mapType== “POI”)//获取道路等POI,和影像地图配合使用

{

url =“http://mt”+(col%4)+”.google.cn/vt/imgtp=png32&lyrs=h@169000000&hl=zh-CN&gl=cn&”+

“x=” + col +“&” +

“y=” + row +“&” +

“z=” + level+“&” +

“s=” + s;

}

 

return newURLRequest(url);

}

 

private functionbuildTileInfo():void

{

_tileInfo.height=256;

_tileInfo.width=256;

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

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

];

}

}

}

 

需要确定googlemap地图服务的坐标系和地图服务的地址。

 

 

运行结果为

 

图一、矢量数据

 

图二、影像数据

 

图三、混合模式

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值