调用百度地图的ActionScripts脚本是用的网上一位“GIS大奔”的博客,在网上查到以后,拷下来,安装好FLESH BUILDER 4独立版,下载ArcGIS server FIEX API 2.0安装上,写一个调用脚本的MXML,就成功地调到了百度地图。用了差不多1天时间吧,之前没有做过FLEX,但是对AE挺熟。虽然成功调到图了,由于前面那位大牛只共享了代码,没有说明实现的原理,不明所以也就不能在业务应用中按自己的需要进行调整,所以又花了两天的时间,看了看,这个实现脚本的各个部分的作用,结合百度地图的API,ArcGIS server FIEX API帮助,基本理解了实现原理,在此将自己的理解写出来。
参考文章地址
http://www.gisall.com/html/72/124272-6284.html.
百度地图API http://dev.baidu.com/wiki/static/index.htm
编写一个扩展TiledMapServiceLayer的类,类名叫BaiduTiledMapServiceLayer。主要是重载TiledMapServiceLayer的getTileURL方法和设置Extent、TileInfo等属性。
// ActionScript file
package samples {
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;
import mx.controls.Alert;
public class BaiduTiledMapServiceLayer extends TiledMapServiceLayer { //成员变量 private var _tileInfo:TileInfo = new TileInfo();// see buildTileInfo() private var _wkid:int = 102100;//102113;//102100; private var leftcorner:Number=0.0; private var cornerCoordinate:Number = 20037508.3427892; private var _mapType:String = "Image";
public function BaiduTiledMapServiceLayer() { super();
buildTileInfo(); // to create our hardcoded tileInfo
setLoaded(true);// Map will only use loaded layers }
//---------------------------------- // 全屏范围 // - required to calculate the tiles to use //---------------------------------- override public function get fullExtent():Extent { return new Extent(-cornerCoordinate, -cornerCoordinate, cornerCoordinate, cornerCoordinate, new SpatialReference(_wkid)); }
//---------------------------------- // 初始化范围 // - needed if Map doesn't have an extent //----------------------------------
override public function get initialExtent():Extent { return new Extent(-cornerCoordinate, -cornerCoordinate, cornerCoordinate, cornerCoordinate, new SpatialReference(_wkid)); }
//---------------------------------- // 空间参考系 // - needed if Map doesn't have a spatialReference //---------------------------------- override public function get spatialReference():SpatialRefere |