注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

快乐小屋

 
 
 

日志

 
 

ArcGIS Server Flex API连接Googlemap  

2013-04-28 10:45:47|  分类: Flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

 

以下为实现的完整代码

package com.esri.viewer.components.extensionMaps {     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;           //扩展TiledMapServiceLayer图层实现加载google地图       public class GoogleMapLayer extends TiledMapServiceLayer       {           private var _tileInfo:TileInfo = new TileInfo();           private var _baseURL:String="";           private var _initialExtent:Extent;         private var _wkid:int = 102113;                 public var mapType:String="Map";                 public function GoogleMapLayer(initialExtent:Extent)           {               super();                           _initialExtent = initialExtent;                         buildTileInfo();               setLoaded(true);           }                   override public function get fullExtent():Extent           {               return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, new SpatialReference(_wkid));         }                   override public function get initialExtent():Extent           {               if(_initialExtent)                 return _initialExtent;                         return fullExtent;         }                   override public function get spatialReference():SpatialReference           {               return new SpatialReference(wkid);           }                   override public function get tileInfo():TileInfo           {               return _tileInfo;           }                           override protected 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 new URLRequest(url);           }                   private function buildTileInfo():void          {               _tileInfo.height=256;               _tileInfo.width=256;               _tileInfo.origin=new MapPoint(-20037508.342787, 20037508.342787);               _tileInfo.spatialReference=new SpatialReference(_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地图服务的坐标系和地图服务的地址。

 

运行结果为

图一、矢量数据

ArcGIS Server Flex API连接Googlemap - 快乐小屋 - 快乐小屋

图二、影像数据

ArcGIS Server Flex API连接Googlemap - 快乐小屋 - 快乐小屋

图三、混合模式

ArcGIS Server Flex API连接Googlemap - 快乐小屋 - 快乐小屋

  评论这张
 
阅读(369)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018