ArcGIS Server FLEX API调用百度地图实现技术

本文介绍了如何使用ArcGIS Server FLEX API调用百度地图,通过创建自定义扩展类BaiduTiledMapServiceLayer,重载getTileURL方法,实现了对百度地图切片的调用。讲解了切片Schema的概念,包括切图层级、图片大小、空间参照系等,并详细解析了百度地图切片的坐标系统和图块编号规则。同时,讨论了在实际应用中如何设置地图范围和显示层级,以及百度地图的三种类型。
摘要由CSDN通过智能技术生成

调用百度地图的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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值