`
Virgo_S
  • 浏览: 1153438 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ArcGIS Flex API读取自定义瓦片地图

    博客分类:
  • Flex
阅读更多
PortlandTiledMapServiceLayer.as
package com.esri.ags.samples
{

import com.esri.ags.SpatialReference;
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.supportClasses.LOD;
import com.esri.ags.layers.supportClasses.TileInfo;
import com.esri.ags.layers.TiledMapServiceLayer;

import flash.net.URLRequest;

/**
 * PortlandTiledMapServiceLayer
 */
public class PortlandTiledMapServiceLayer extends TiledMapServiceLayer
{
    //--------------------------------------------------------------------------
    //
    //  Constructor
    //
    //--------------------------------------------------------------------------

    /**
     * Creates a new PortlandTiledMapServiceLayer object.
     */
    public function PortlandTiledMapServiceLayer()
    {
        super();

        buildTileInfo(); // to create our hardcoded tileInfo

        setLoaded(true); // Map will only use loaded layers
    }

    //--------------------------------------------------------------------------
    //
    //  Variables
    //
    //--------------------------------------------------------------------------

    private var _tileInfo:TileInfo = new TileInfo(); // see buildTileInfo()
    private var _baseURL:String = "http://sampleserver1.arcgisonline.com/arcgiscache/Portland_Portland_ESRI_LandBase_AGO/Portland/_alllayers";

    //--------------------------------------------------------------------------
    //
    //  Overridden properties
    //      fullExtent()
    //      initialExtent()
    //      spatialReference()
    //      tileInfo()
    //      units()
    //
    //--------------------------------------------------------------------------


    //----------------------------------
    //  fullExtent
    //  - required to calculate the tiles to use
    //----------------------------------

    override public function get fullExtent():Extent
    {
        return new Extent(-123.596895130725, 44.297575737946, -121.553757125519, 46.3683237161949, new SpatialReference(4326));
    }

    //----------------------------------
    //  initialExtent
    //  - needed if Map doesn't have an extent
    //----------------------------------

    override public function get initialExtent():Extent
    {
        return new Extent(-122.539, 45.500, -122.540, 45.501, new SpatialReference(4326));
    }

    //----------------------------------
    //  spatialReference
    //  - needed if Map doesn't have a spatialReference
    //----------------------------------

    override public function get spatialReference():SpatialReference
    {
        return new SpatialReference(4326);
    }

    //----------------------------------
    //  tileInfo
    //----------------------------------

    override public function get tileInfo():TileInfo
    {
        return _tileInfo;
    }

    //----------------------------------
    //  units
    //  - needed if Map doesn't have it set
    //----------------------------------

    override public function get units():String
    {
        return "esriDecimalDegrees";
    }

    //--------------------------------------------------------------------------
    //
    //  Overridden methods
    //      getTileURL(level:Number, row:Number, col:Number):URLRequest
    //
    //--------------------------------------------------------------------------

    override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest
    {
        // Use virtual cache directory
        // This assumes the cache's virtual directory is exposed, which allows you access
        // to tile from the Web server via the public cache directory.
        // Example of a URL for a tile retrieved from the virtual cache directory:
        // http://serverx.esri.com/arcgiscache/dgaerials/Layers/_alllayers/L01/R0000051f/C000004e4.jpg
        var url:String = _baseURL
            + "/L" + padString(String(level), 2, "0")
            + "/R" + padString(row.toString(16), 8, "0")
            + "/C" + padString(col.toString(16), 8, "0") + ".png";
        return new URLRequest(url);
    }

    //--------------------------------------------------------------------------
    //
    //  Private Methods
    //
    //--------------------------------------------------------------------------

    private function buildTileInfo():void
    {
        _tileInfo.height = 512;
        _tileInfo.width = 512;
        _tileInfo.origin = new MapPoint(-180, 90);
        _tileInfo.spatialReference = new SpatialReference(4326);
        _tileInfo.lods =
            [
            new LOD(0, 0.351562499999999, 147748799.285417),
            new LOD(1, 0.17578125, 73874399.6427087),
            new LOD(2, 0.0878906250000001, 36937199.8213544),
            new LOD(3, 0.0439453125, 18468599.9106772),
            new LOD(4, 0.02197265625, 9234299.95533859),
            new LOD(5, 0.010986328125, 4617149.97766929),
            new LOD(6, 0.0054931640625, 2308574.98883465),
            new LOD(7, 0.00274658203124999, 1154287.49441732),
            new LOD(8, 0.001373291015625, 577143.747208662),
            new LOD(9, 0.0006866455078125, 288571.873604331),
            new LOD(10, 0.000343322753906249, 144285.936802165),
            new LOD(11, 0.000171661376953125, 72142.9684010827),
            new LOD(12, 0.0000858306884765626, 36071.4842005414),
            new LOD(13, 0.0000429153442382813, 18035.7421002707),
            new LOD(14, 0.0000214576721191406, 9017.87105013534),
            new LOD(15, 0.0000107288360595703, 4508.93552506767)
            ];
    }

    private function padString(text:String, size:int, ch:String):String
    {
        while (text.length < size)
        {
            text = ch + text;
        }
        return text;
    }
}

}




customtiled.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:esri="http://www.esri.com/2008/ags"
               xmlns:samples="com.esri.ags.samples.*"
               pageTitle="Extending TiledMapServiceLayer in Flex API">
    <!--
         @@includeFiles com/esri/ags/samples/PortlandTiledMapServiceLayer.as

         This sample shows how tiles can be used without the REST endpoint.

         The ArcGIS API for Flex allows for extending the API
         to access layer types not included as part of the API.
         In this example, tiled layers (TiledMapServiceLayer) is extended
         to access tiles created in 9.2 or above and made accessible
         in the standard virtual directory.

         Steps involved:
         1. Creating new ActionScript class that extends TiledMapServiceLayer.
         2. Hardcoding some of the configuration settings:
         fullExtent, initialExtent, spatialReference, tileInfo, and units.
         3. Overriding the protected function getTileURL() to obtain the appropriate
         tiles and place them accurately on the map.
         4. Using the extended class with MXML or ActionScript :)
    -->

    <esri:Map id="myMap">
        <samples:PortlandTiledMapServiceLayer id="virtualTiles" fadeInFrameCount="12"/>
    </esri:Map>

    <s:Label width="85%"
             backgroundColor="0xFFFF00"
             color="0x000000"
             fontSize="14"
             fontWeight="bold"
             horizontalCenter="0"
             paddingBottom="10"
             paddingLeft="10"
             paddingRight="10"
             paddingTop="10"
             text="By extending TiledMapServiceLayer, this application can access tiles from an ArcGIS 9.2 (or above) virtual directory.  This specific service is in the {virtualTiles.spatialReference.wkid} spatialReference and has {virtualTiles.tileInfo.lods.length} scale levels."/>
</s:Application>

分享到:
评论

相关推荐

    在ArcGIS Flex API中使用天地图的地名搜索服务

    在ArcGIS Flex API中使用天地图的地名搜索服务。源代码中通过ArcGIS Flex API封装了TianDiTuLocationTask类,接口类似ArcGIS Flex API中task类。

    Arcgis flex api自定义风场点图标样式

    Arcgis flex api自定义风场点图标样式

    arcgis js api 加载本地天地图瓦片

    提供arcgis js api加载本地天地图瓦片的方法,dojo封装类

    ArcGIS Flex API和SuperMap Flex API实现的军标箭头库

    首先,ArcGIS Flex API是由Esri公司提供的,用于构建富互联网应用程序(RIA)的开发接口,它允许开发者在网页上创建交互式地图。API提供了丰富的地图操作功能,如图层管理、查询、分析以及图形绘制。在军标箭头库的...

    arcgis api for js 自定义弹出信息提示框

    在GIS领域,ArcGIS API for JavaScript 是Esri公司提供的一个强大的Web地图开发工具,它允许开发者构建交互式、数据驱动的地图应用。在这个场景中,我们关注的是如何利用这个API来实现自定义的弹出信息提示框。弹出...

    arcgis for flex api 2.5

    arcgis flex api 2.5 最新

    arcgis flex api 3.0 离线帮助文档chm格式

    arcgis flex api 3.0 离线帮助文档chm格式 绝对好用!

    src.rar_ARCGIS FOR FLEX API_arcgis_arcgis flex api_arcgis for fl

    ArcGIS for Flex API 是Esri公司为Flex开发者提供的一款强大的地图服务开发工具,它允许开发者在Adobe Flex环境中创建丰富的、交互式的Web GIS应用。本资源包含ArcGIS for Flex API的全部代码实例,是深入理解和学习...

    建立基于ArcGIS Flex API的地图应用

    在构建基于ArcGIS Flex API的地图应用时,首先要理解ArcGIS Server的核心概念。ArcGIS Server是一个强大的地理信息系统(GIS)服务器,它允许开发人员部署、管理和发布地图服务、地理编码服务、几何服务等。通过...

    ArcGIS JS API创建自定义图层实现在2D地图中渲染水波纹扩散效果.zip

    在本文中,我们将深入探讨如何使用ArcGIS JavaScript API(JS API)来创建一个自定义图层,以便在2D地图上实现水波纹扩散的动态效果。ArcGIS JS API是Esri公司提供的一个强大工具,它允许开发者在Web浏览器中构建...

    ARCGIS Flex API 2.4版本 离线帮助

    1. Map:地图组件是ARCGIS Flex API的核心,它负责展示地图内容,包括图层、标注、图例等。 2. Layer:图层是地图上的数据容器,可以包含各种数据源,如ArcGIS Server服务、WMS服务、KML文件等。 3. Graphic:图形...

    ArcGIS Flex API 2.0离线参考

    ArcGIS Flex API是Esri公司开发的一个强大的地图服务框架,用于构建交互式的Web GIS应用程序。API基于Adobe Flex技术,允许开发者利用Flex的富互联网应用(RIA)功能来构建功能丰富的地图应用。 此离线参考可能包含...

    ArcGIS Flex API 中的 Flex 技-面向对象

    此外,ArcGIS Flex API利用继承和多态性来处理各种GIS对象,如地图图层、要素服务等。这些对象被设计成一系列可继承的类,从而支持更高级的功能,如动态地图服务、要素查询和空间分析。 #### 结论 总而言之,...

    ArcGIS Flex API—高级篇

    ### ArcGIS Flex API 高级篇 #### 聚合 在**ArcGIS Flex API**中,聚合是一种处理大量地理信息的有效方法。特别是在处理密集的数据点时,通过聚合可以将多个点合并为一个代表性的点,以此来提高地图的可读性和性能...

    arcgis flex API开发

    ArcGIS Flex API 是Esri公司提供的一个强大的地图服务开发框架,它允许开发者使用Adobe Flex技术构建交互式、富互联网应用程序(RIA),以展示和操作地理信息。Flex API 提供了丰富的地图绘制、查询、分析和数据可视...

    ArcGIS API for Flex 调用天地图、e都会瓦片地图

    在提供的文件 `TianDiTuTiledMapServiceLayer.as` 中,可能包含了一个专门用于连接天地图瓦片服务的类。通过阅读和理解这个源码,我们可以更好地了解如何定制和优化地图服务的使用,例如处理缓存策略、错误处理等。 ...

    基于ArcGIS Flex API开发Flex AIR Mobile应用

    ArcGIS Flex API是Esri公司提供的一款强大的地图服务接口,它允许开发者将地理信息系统(GIS)功能集成到Flex应用中,而Adobe AIR则是一个跨平台的运行环境,使开发者能够构建桌面和移动设备上的富互联网应用(RIA)...

    ArcGIS Flex API 中的 Flex 技-xml解析

    在ArcGIS Flex API中,XML经常被用作传输和表示地理信息的一种方式,包括地理坐标、地图特性等。因此,掌握XML的解析技术对于开发者来说是非常重要的。 #### 三、XML结构与遍历方式 在深入探讨XML解析之前,首先...

    ArcGIS Flex API 2.0 离线参考 - 无JS报错更新版

    ArcGIS Flex API是Esri公司提供的一种接口,它允许开发者在Flex环境中构建交互式的地图应用。此次提供的版本解决了前一版本中存在的JavaScript错误问题,确保了开发者在离线状态下也能顺畅地查阅API文档,减少因报错...

Global site tag (gtag.js) - Google Analytics