加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ArcGIS Server Flex API连接Googlemap

发布时间:2020-12-15 03:59:50 所属栏目:百科 来源:网络整理
导读:ArcGIS Server Flex API 连接 Googlemap (本实例只是个人兴趣研究,如果想要应用到商业用途,请联系相关厂家) ? ArcGIS Server Flex API 连接 Googlemap 的地图数据,原理是通过访问 Googlemap 地图服务的切片数据,重载 ArcGIS ServerFelx API 的 TiledMa

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,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地图服务的坐标系和地图服务的地址。

?

?

运行结果为

?

图一、矢量数据

?

图二、影像数据

?

图三、混合模式

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读