首页 技术 正文
技术 2022年11月8日
0 收藏 641 点赞 2,220 浏览 14925 个字

 一  Flex加载Google地图作底图

  (1)帮助类GoogleLayer.as

/*
* 根据输入的地图类型加载Google地图(by chenyuming)
*/package Layers
{ 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; public class GoogleLayer extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo=new TileInfo();
private var _baseURL:String="";
private var MapStyle:String=""; public function GoogleLayer(mapStyle:String)
{
this.MapStyle=mapStyle;
super();
buildTileInfo();
setLoaded(true); } override public function get fullExtent():Extent
{
return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, new SpatialReference());
} override public function get initialExtent():Extent
{
return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, new SpatialReference());
} override public function get spatialReference():SpatialReference
{
return new SpatialReference();
} override public function get tileInfo():com.esri.ags.layers.supportClasses.TileInfo
{
return _tileInfo;
} override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest
{
var s:String = "Galileo".substring(, (( * col + row) % )); var url:String ="";
if (this.MapStyle == "Vector")//获取矢量地图
{
url = "http://mt" + (col % ) + ".google.com/vt/lyrs=m@158000000&hl=zh-CN&gl=cn&" +
"x=" + col + "&" +
"y=" + row + "&" +
"z=" + level + "&" +
"s=" + s;
}
else if (this.MapStyle == "Terrain")//获取地形图
{
url = "http://mt" + (col % ) + ".google.cn/vt/lyrs=t@131,r@227000000&hl=zh-CN&gl=cn&" +
"x=" + col + "&" +
"y=" + row + "&" +
"z=" + level + "&" +
"s=" + s;
}
else if (this.MapStyle == "Image")//获取影像地图
{
url = "http://mt" + (col % ) + ".google.com/vt/lyrs=s&hl=en&gl=en&" +
"x=" + col + "&" +
"y=" + row + "&" +
"z=" + level + "&" +
"s=" + s;
}
else if (this.MapStyle == "POI")//获取道路等POI,和影像地图配合使用
{
url = "http://mt" + (col % ) + ".google.com/vt/imgtp=png32&lyrs=h@169000000&hl=zh-CN&gl=cn&" +
"x=" + col + "&" +
"y=" + row + "&" +
"z=" + level + "&" +
"s=" + s;
}
return new URLRequest(url);
}
public function set url(vals:String):void
{
this._baseURL = vals;
}
private function buildTileInfo():void
{
_tileInfo.height=;
_tileInfo.width=;
_tileInfo.origin=new MapPoint(-20037508.342787, 20037508.342787);
_tileInfo.spatialReference=new SpatialReference();
_tileInfo.lods = [
new LOD(, 156543.033928, 591657527.591555),
new LOD(, 78271.5169639999, 295828763.795777),
new LOD(, 39135.7584820001, 147914381.897889),
new LOD(, 19567.8792409999, 73957190.948944),
new LOD(, 9783.93962049996, 36978595.474472),
new LOD(, 4891.96981024998, 18489297.737236),
new LOD(, 2445.98490512499, 9244648.868618),
new LOD(, 1222.99245256249, 4622324.434309),
new LOD(, 611.49622628138, 2311162.217155),
new LOD(, 305.748113140558, 1155581.108577),
new LOD(, 152.874056570411, 577790.554289),
new LOD(, 76.4370282850732, 288895.277144),
new LOD(, 38.2185141425366, 144447.638572),
new LOD(, 19.1092570712683, 72223.819286),
new LOD(, 9.55462853563415, 36111.909643),
new LOD(, 4.77731426794937, 18055.954822),
new LOD(, 2.38865713397468, 9027.977411),
new LOD(, 1.19432856685505, 4513.988705),
new LOD(, 0.597164283559817, 2256.994353),
new LOD(, 0.298582141647617, 1128.497176)
];
} public function lon2Mercator(px:int):int
{
var x:int = px * 20037508.34 / ;
return x;
} public function lat2Mercator(py:int):int
{
var y:int;
y = Math.log(Math.tan(( + py) * Math.PI / )) / (Math.PI / );
y = y * 20037508.34 / ;
return y;
}
}
}

  (2)引用方法

//加载google地图
var baseLayer:GoogleLayer = new GoogleLayer("Image")
baseMap.addLayer(baseLayer);

  二  Flex加载百度地图作底图

  (1)帮助类BaiduLayer.as

/*
* 根据输入的地图类型加载百度地图(by chenyuming)
*/package Layers
{
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; import flashx.textLayout.formats.Float; public class BaiduLayer extends TiledMapServiceLayer
{
//成员变量
private var _tileInfo:TileInfo = new TileInfo();
private var _wkid:int = ;
private var cornerCoordinate:Number = 20037508.3427892;
private var _mapStyle:String = "Image";
private var _initialExtent:Extent; public function BaiduLayer(mapStyle:String)
{
this._mapStyle = mapStyle; super();
buildTileInfo(); // to create our hardcoded tileInfo
setLoaded(true); // Map will only use loaded layers
} // 全屏范围
override public function get fullExtent():Extent
{
return new Extent(-cornerCoordinate, -cornerCoordinate, cornerCoordinate, cornerCoordinate, new SpatialReference(_wkid));
} // 初始化范围 (左下角坐标,右上角坐标)
override public function get initialExtent():Extent
{
return new Extent(5916776.8, 1877209.3, 19242502.6, 7620381.8, new SpatialReference());
} // 空间参考系
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 zoom:int = level - ;
var offsetX:int = Math.pow(, zoom) as int;
var offsetY:int = offsetX - ;
var numX:int = col - offsetX;
var numY:int = (-row) + offsetY; zoom = level + ;
var num:int = (col + row) % + ; var url:String = null;
if (_mapStyle == "Vector") //获取矢量地图
{
url = "http://q"+num+".baidu.com/it/u=x="+numX+";y="+ numY + ";z=" + zoom + ";v=013;type=web&fm=44";
}
else if (_mapStyle == "Image") //影像地图
{
url = "http://q"+num+".baidu.com/it/u=x="+numX+";y="+numY+";z="+zoom+";v=009;type=sate&fm=46";
}
else if (_mapStyle == "POI") //获取道路等POI,和影像地图配合使用
{
url = "http://q"+num+".baidu.com/it/u=x="+numX+";y="+numY+";z="+zoom+";v=013;type=trans&fm=47";
}
return new URLRequest(url);
} // 自定义方法,定义地图缩放等级
private function buildTileInfo():void
{
_tileInfo.height=;
_tileInfo.width=;
_tileInfo.origin=new MapPoint(-cornerCoordinate, cornerCoordinate);
_tileInfo.spatialReference=new SpatialReference(_wkid);
_tileInfo.lods = [
new LOD(, 156543.033928, 591657527.591555),
new LOD(, 78271.5169639999, 295828763.795777),
new LOD(, 39135.7584820001, 147914381.897889),
new LOD(, 19567.8792409999, 73957190.948944),
new LOD(, 9783.93962049996, 36978595.474472),
new LOD(, 4891.96981024998, 18489297.737236),
new LOD(, 2445.98490512499, 9244648.868618),
new LOD(, 1222.99245256249, 4622324.434309),
new LOD(, 611.49622628138, 2311162.217155),
new LOD(, 305.748113140558, 1155581.108577),
new LOD(, 152.874056570411, 577790.554289),
new LOD(, 76.4370282850732, 288895.277144),
new LOD(, 38.2185141425366, 144447.638572),
new LOD(, 19.1092570712683, 72223.819286),
new LOD(, 9.55462853563415, 36111.909643),
new LOD(, 4.77731426794937, 18055.954822),
new LOD(, 2.38865713397468, 9027.977411),
new LOD(, 1.19432856685505, 4513.988705),
new LOD(, 0.597164283559817, 2256.994353),
new LOD(, 0.298582141647617, 1128.497176)
];
}
}
}

  (2)引用方法

//加载百度地图
var baseLayer:BaiduLayer = new BaiduLayer("Image");
var POILayer:BaiduLayer = new BaiduLayer("POI");
baseMap.addLayer(baseLayer);
baseMap.addLayer(POILayer);

  三  Flex加载天地图作底图(经纬度投影)

  (1)帮助类TianDiTuLayer.as

/*
* 根据输入的地图类型加载天地图(by chenyuming)
* 注意:投影类型为经纬度
*/package Layers
{
import com.esri.ags.SpatialReference;
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import com.esri.ags.layers.TiledMapServiceLayer;
import com.esri.ags.layers.supportClasses.LOD;
import com.esri.ags.layers.supportClasses.TileInfo; import flash.net.URLRequest;
import flash.sampler.Sample; public class TianDiTuLayer extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo;
private var _baseURL:String;
private var _baseURLs:Array;
private var _initExtent:String;
private var _serviceMode:String;
private var _imageFormat:String;
private var _layerId:String;
private var _tileMatrixSetId:String;
private var _mapStyle:String=""; public function TianDiTuLayer(mapStyle:String,serviceMode:String = "KVP",imageFormat:String = "tiles")
{
this._mapStyle=mapStyle;//设置地图类型
this._serviceMode = serviceMode;
this._imageFormat = imageFormat; super();
this._tileInfo = new TileInfo();
this._initExtent = null;
this.buildTileInfo();
setLoaded(true);
} override public function get fullExtent() : Extent
{
return new Extent(-, -, , , new SpatialReference());
} public function set initExtent(initextent:String):void
{
this._initExtent = initextent;
} override public function get initialExtent() :Extent
{
if (this._initExtent == null)
return new Extent(70.0, 15.0, 135.0, 55.0, new SpatialReference());
var coors:Array = this._initExtent.split(",");
return new Extent(Number(coors[]), Number(coors[]), Number(coors[]) ,Number(coors[]), new SpatialReference());
} override public function get spatialReference() : SpatialReference
{
return new SpatialReference();
} override public function get tileInfo() : TileInfo
{
return this._tileInfo;
} //根据不同地图类型加载不同WMTS服务
override protected function getTileURL(level:Number, row:Number, col:Number) : URLRequest
{
if(this._mapStyle == "ImageBaseMap")//获取影像地图(底图)
{
_baseURL = "http://t0.tianditu.com/img_c/wmts";
_layerId = "img";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "ImageCNNote")//获取影像地图(中文注记)
{
_baseURL = "http://t0.tianditu.com/cia_c/wmts";
_layerId = "cia";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "ImageENNote")//获取影像地图(英文注记)
{
_baseURL = "http://t0.tianditu.com/eia_c/wmts";
_layerId = "eia";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "TerrainBaseMap")//获取地形图(底图)
{
_baseURL = "http://t0.tianditu.com/ter_c/wmts";
_layerId = "ter";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "TerrainCNNote")//获取地形图(中文注记)
{
_baseURL = "http://t0.tianditu.com/cta_c/wmts";
_layerId = "cta";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "TerrainENNote")//获取地形图(英文注记)
{
//暂无
}
else if(this._mapStyle == "VectorBaseMap")//获取矢量图(底图)
{
_baseURL = "http://t0.tianditu.com/vec_c/wmts";
_layerId = "vec";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "VectorCNNote")//获取矢量图(中文注记)
{
_baseURL = "http://t0.tianditu.com/cva_c/wmts";
_layerId = "cva";
_tileMatrixSetId = "c";
}
else if(this._mapStyle == "VectorENNote")//获取矢量图(英文注记)
{
_baseURL = "http://t0.tianditu.com/eva_c/wmts";
_layerId = "eva";
_tileMatrixSetId = "c";
} var urlRequest:String=_baseURL+ "/wmts?Service=WMTS&Request=GetTile&Version=1.0.0" +
"&Style=Default&Format="+_imageFormat+"&serviceMode="+_serviceMode+"&layer="+_layerId +
"&TileMatrixSet="+_tileMatrixSetId+"&TileMatrix=" + level + "&TileRow=" + row + "&TileCol=" + col; return new URLRequest(urlRequest);
} //切片信息
private function buildTileInfo() : void
{
this._tileInfo.height = ;
this._tileInfo.width = ;
this._tileInfo.origin = new MapPoint(-, );
this._tileInfo.spatialReference = new SpatialReference();
this._tileInfo.lods = new Array();
this._tileInfo.lods = [
new LOD( , 0.703125, 2.958293554545656E8),
new LOD( , 0.351563, 1.479146777272828E8),
new LOD( , 0.175781, 7.39573388636414E7),
new LOD( , 0.0878906, 3.69786694318207E7),
new LOD( , 0.0439453, 1.848933471591035E7),
new LOD( , 0.0219727, 9244667.357955175),
new LOD( , 0.0109863, 4622333.678977588),
new LOD( , 0.00549316, 2311166.839488794),
new LOD( , 0.00274658, 1155583.419744397),
new LOD(, 0.00137329, 577791.7098721985),
new LOD(, 0.000686646, 288895.85493609926),
new LOD(, 0.000343323, 144447.92746804963),
new LOD(, 0.000171661, 72223.96373402482),
new LOD(, 8.58307e-005, 36111.98186701241),
new LOD(, 4.29153e-005, 18055.990933506204),
new LOD(, 2.14577e-005, 9027.995466753102),
new LOD(, 1.07289e-005, 4513.997733376551),
new LOD(, 5.36445e-006, 2256.998866688275)
];
}
}
}

  (2)引用方法

//加载天地图(经纬度投影)
var baseLayer:TianDiTuLayer = new TianDiTuLayer("VectorBaseMap")//天地图底图
var CNNoteLayer:TianDiTuLayer = new TianDiTuLayer("VectorCNNote");//中文注记
baseMap.addLayer(baseLayer);
baseMap.addLayer(CNNoteLayer);

  四  Flex加载天地图作底图(球面墨卡托投影)

  (1)帮助类TianDiTuLayerMercator.as

/*
* 根据输入的地图类型加载天地图(by chenyuming)
* 注意:投影类型为球形墨卡托
*/package Layers
{
import com.esri.ags.SpatialReference;
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import com.esri.ags.layers.TiledMapServiceLayer;
import com.esri.ags.layers.supportClasses.LOD;
import com.esri.ags.layers.supportClasses.TileInfo; import flash.net.URLRequest;
import flash.sampler.Sample; public class TianDiTuLayerMercator extends TiledMapServiceLayer
{
private var _tileInfo:TileInfo;
private var _baseURL:String;
private var _baseURLs:Array;
private var _initExtent:String;
private var _layerId:String;
private var _mapStyle:String=""; public function TianDiTuLayerMercator(mapStyle:String)
{
this._mapStyle=mapStyle;//设置地图类型 super();
this._tileInfo = new TileInfo();
this._initExtent = null;
this.buildTileInfo();
setLoaded(true);
} override public function get fullExtent() : Extent
{
return new Extent(-20037508.3427892,-20037508.3427892, 20037508.3427892,20037508.3427892, new SpatialReference());
} public function set initExtent(initextent:String):void
{
this._initExtent = initextent;
} override public function get initialExtent() :Extent
{
if (this._initExtent == null)
return new Extent(8397502.3, 2660018.1, 15003861.0, 5509344.0, new SpatialReference());
var coors:Array = this._initExtent.split(",");
return new Extent(Number(coors[]), Number(coors[]), Number(coors[]) ,Number(coors[]), new SpatialReference());
} override public function get spatialReference() : SpatialReference
{
return new SpatialReference();
} override public function get tileInfo() : TileInfo
{
return this._tileInfo;
} //根据不同地图类型加载不同WMTS服务
override protected function getTileURL(level:Number, row:Number, col:Number) : URLRequest
{
_baseURL = "http://t0.tianditu.com"; if(this._mapStyle == "ImageBaseMap")//获取影像地图(底图)
{
_layerId = "img_w";
}
else if(this._mapStyle == "ImageCNNote")//获取影像地图(中文注记)
{
_layerId = "cia_w";
}
else if(this._mapStyle == "ImageENNote")//获取影像地图(英文注记)
{
_layerId = "eia_w";
}
else if(this._mapStyle == "TerrainBaseMap")//获取地形图(底图)
{
_layerId = "ter_w";
}
else if(this._mapStyle == "TerrainCNNote")//获取地形图(中文注记)
{
_layerId = "cta_w";
}
else if(this._mapStyle == "TerrainENNote")//获取地形图(英文注记)
{
//暂无
}
else if(this._mapStyle == "VectorBaseMap")//获取矢量图(底图)
{
_layerId = "vec_w";
}
else if(this._mapStyle == "VectorCNNote")//获取矢量图(中文注记)
{
_layerId = "cva_w";
}
else if(this._mapStyle == "VectorENNote")//获取矢量图(英文注记)
{
_layerId = "eva_w";
} var urlRequest:String =_baseURL+"/DataServer?T="+_layerId+"&x="+col+"&y="+row+"&l="+level; return new URLRequest(urlRequest);
} //切片信息
private function buildTileInfo() : void
{
this._tileInfo.height = ;
this._tileInfo.width = ;
this._tileInfo.origin = new MapPoint(-20037508.3427892,20037508.3427892,new SpatialReference());
this._tileInfo.spatialReference = new SpatialReference();
this._tileInfo.lods = new Array();
this._tileInfo.lods = [
new LOD( ,77664.761018562790697674418604651, 2.958293554545656E8),
new LOD( ,38832.380509281395348837209302326, 1.479146777272828E8),
new LOD( ,19416.190254640697674418604651163, 7.39573388636414E7),
new LOD( ,9708.0951273203488372093023255814, 3.69786694318207E7),
new LOD( ,4854.0475636601744186046511627907, 1.848933471591035E7),
new LOD( ,2427.0237818300872093023255813953, 9244667.357955175),
new LOD( ,1213.5118909150436046511627906977, 4622333.678977588),
new LOD( ,606.75594545752180232558139534884, 2311166.839488794),
new LOD( ,303.37797272876090116279069767442, 1155583.419744397),
new LOD(,151.68898636438045058139534883721, 577791.7098721985),
new LOD(, 75.844493182190225290697674418605, 288895.85493609926),
new LOD(, 37.922246591095112645348837209302, 144447.92746804963),
new LOD(, 18.961123295547556322674418604651, 72223.96373402482),
new LOD(, 9.4805616477737781613372093023256, 36111.98186701241),
new LOD(, 4.7402808238868890806686046511628, 18055.990933506204),
new LOD(, 2.3701404119434445403343023255814, 9027.995466753102),
new LOD(, 1.1850702059717222701671511627907, 4513.997733376551),
new LOD(, 0.59253510298586113508357558139535, 2256.998866688275)
];
}
}
}

  (2)引用方法

//加载天地图(球面墨卡托投影)
var baseLayer:TianDiTuLayerMercator = new TianDiTuLayerMercator("ImageBaseMap")//天地图底图
var CNNoteLayer:TianDiTuLayerMercator = new TianDiTuLayerMercator("ImageCNNote");//中文注记
baseMap.addLayer(baseLayer);
baseMap.addLayer(CNNoteLayer);

  五  天地图WMTS服务

  服务资源。

Flex加载google地图、百度地图以及天地图作底图

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297