zoukankan      html  css  js  c++  java
  • ArcGIS Flex API读取自定义瓦片地图

    PortlandTiledMapServiceLayer.as
    Java代码 复制代码 收藏代码
    1. package com.esri.ags.samples   
    2. {   
    3.   
    4. import com.esri.ags.SpatialReference;   
    5. import com.esri.ags.geometry.Extent;   
    6. import com.esri.ags.geometry.MapPoint;   
    7. import com.esri.ags.layers.supportClasses.LOD;   
    8. import com.esri.ags.layers.supportClasses.TileInfo;   
    9. import com.esri.ags.layers.TiledMapServiceLayer;   
    10.   
    11. import flash.net.URLRequest;   
    12.   
    13. /**  
    14.  * PortlandTiledMapServiceLayer  
    15.  */  
    16. public class PortlandTiledMapServiceLayer extends TiledMapServiceLayer   
    17. {   
    18.     //--------------------------------------------------------------------------   
    19.     //   
    20.     //  Constructor   
    21.     //   
    22.     //--------------------------------------------------------------------------   
    23.   
    24.     /**  
    25.      * Creates a new PortlandTiledMapServiceLayer object.  
    26.      */  
    27.     public function PortlandTiledMapServiceLayer()   
    28.     {   
    29.         super();   
    30.   
    31.         buildTileInfo(); // to create our hardcoded tileInfo   
    32.   
    33.         setLoaded(true); // Map will only use loaded layers   
    34.     }   
    35.   
    36.     //--------------------------------------------------------------------------   
    37.     //   
    38.     //  Variables   
    39.     //   
    40.     //--------------------------------------------------------------------------   
    41.   
    42.     private var _tileInfo:TileInfo = new TileInfo(); // see buildTileInfo()   
    43.     private var _baseURL:String = "http://sampleserver1.arcgisonline.com/arcgiscache/Portland_Portland_ESRI_LandBase_AGO/Portland/_alllayers";   
    44.   
    45.     //--------------------------------------------------------------------------   
    46.     //   
    47.     //  Overridden properties   
    48.     //      fullExtent()   
    49.     //      initialExtent()   
    50.     //      spatialReference()   
    51.     //      tileInfo()   
    52.     //      units()   
    53.     //   
    54.     //--------------------------------------------------------------------------   
    55.   
    56.   
    57.     //----------------------------------   
    58.     //  fullExtent   
    59.     //  - required to calculate the tiles to use   
    60.     //----------------------------------   
    61.   
    62.     override public function get fullExtent():Extent   
    63.     {   
    64.         return new Extent(-123.59689513072544.297575737946, -121.55375712551946.3683237161949new SpatialReference(4326));   
    65.     }   
    66.   
    67.     //----------------------------------   
    68.     //  initialExtent   
    69.     //  - needed if Map doesn't have an extent   
    70.     //----------------------------------   
    71.   
    72.     override public function get initialExtent():Extent   
    73.     {   
    74.         return new Extent(-122.53945.500, -122.54045.501new SpatialReference(4326));   
    75.     }   
    76.   
    77.     //----------------------------------   
    78.     //  spatialReference   
    79.     //  - needed if Map doesn't have a spatialReference   
    80.     //----------------------------------   
    81.   
    82.     override public function get spatialReference():SpatialReference   
    83.     {   
    84.         return new SpatialReference(4326);   
    85.     }   
    86.   
    87.     //----------------------------------   
    88.     //  tileInfo   
    89.     //----------------------------------   
    90.   
    91.     override public function get tileInfo():TileInfo   
    92.     {   
    93.         return _tileInfo;   
    94.     }   
    95.   
    96.     //----------------------------------   
    97.     //  units   
    98.     //  - needed if Map doesn't have it set   
    99.     //----------------------------------   
    100.   
    101.     override public function get units():String   
    102.     {   
    103.         return "esriDecimalDegrees";   
    104.     }   
    105.   
    106.     //--------------------------------------------------------------------------   
    107.     //   
    108.     //  Overridden methods   
    109.     //      getTileURL(level:Number, row:Number, col:Number):URLRequest   
    110.     //   
    111.     //--------------------------------------------------------------------------   
    112.   
    113.     override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest   
    114.     {   
    115.         // Use virtual cache directory   
    116.         // This assumes the cache's virtual directory is exposed, which allows you access   
    117.         // to tile from the Web server via the public cache directory.   
    118.         // Example of a URL for a tile retrieved from the virtual cache directory:   
    119.         // http://serverx.esri.com/arcgiscache/dgaerials/Layers/_alllayers/L01/R0000051f/C000004e4.jpg   
    120.         var url:String = _baseURL   
    121.             + "/L" + padString(String(level), 2"0")   
    122.             + "/R" + padString(row.toString(16), 8"0")   
    123.             + "/C" + padString(col.toString(16), 8"0") + ".png";   
    124.         return new URLRequest(url);   
    125.     }   
    126.   
    127.     //--------------------------------------------------------------------------   
    128.     //   
    129.     //  Private Methods   
    130.     //   
    131.     //--------------------------------------------------------------------------   
    132.   
    133.     private function buildTileInfo():void  
    134.     {   
    135.         _tileInfo.height = 512;   
    136.         _tileInfo.width = 512;   
    137.         _tileInfo.origin = new MapPoint(-18090);   
    138.         _tileInfo.spatialReference = new SpatialReference(4326);   
    139.         _tileInfo.lods =   
    140.             [   
    141.             new LOD(00.351562499999999147748799.285417),   
    142.             new LOD(10.1757812573874399.6427087),   
    143.             new LOD(20.087890625000000136937199.8213544),   
    144.             new LOD(30.043945312518468599.9106772),   
    145.             new LOD(40.021972656259234299.95533859),   
    146.             new LOD(50.0109863281254617149.97766929),   
    147.             new LOD(60.00549316406252308574.98883465),   
    148.             new LOD(70.002746582031249991154287.49441732),   
    149.             new LOD(80.001373291015625577143.747208662),   
    150.             new LOD(90.0006866455078125288571.873604331),   
    151.             new LOD(100.000343322753906249144285.936802165),   
    152.             new LOD(110.00017166137695312572142.9684010827),   
    153.             new LOD(120.000085830688476562636071.4842005414),   
    154.             new LOD(130.000042915344238281318035.7421002707),   
    155.             new LOD(140.00002145767211914069017.87105013534),   
    156.             new LOD(150.00001072883605957034508.93552506767)   
    157.             ];   
    158.     }   
    159.   
    160.     private function padString(text:String, size:int, ch:String):String   
    161.     {   
    162.         while (text.length < size)   
    163.         {   
    164.             text = ch + text;   
    165.         }   
    166.         return text;   
    167.     }   
    168. }   
    169.   
    170. }  


    customtiled.mxml
    Java代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>   
    2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
    3.                xmlns:s="library://ns.adobe.com/flex/spark"  
    4.                xmlns:mx="library://ns.adobe.com/flex/mx"  
    5.                xmlns:esri="http://www.esri.com/2008/ags"  
    6.                xmlns:samples="com.esri.ags.samples.*"  
    7.                pageTitle="Extending TiledMapServiceLayer in Flex API">   
    8.     <!--   
    9.          @@includeFiles com/esri/ags/samples/PortlandTiledMapServiceLayer.as   
    10.   
    11.          This sample shows how tiles can be used without the REST endpoint.   
    12.   
    13.          The ArcGIS API for Flex allows for extending the API   
    14.          to access layer types not included as part of the API.   
    15.          In this example, tiled layers (TiledMapServiceLayer) is extended   
    16.          to access tiles created in 9.2 or above and made accessible   
    17.          in the standard virtual directory.   
    18.   
    19.          Steps involved:   
    20.          1. Creating new ActionScript class that extends TiledMapServiceLayer.   
    21.          2. Hardcoding some of the configuration settings:   
    22.          fullExtent, initialExtent, spatialReference, tileInfo, and units.   
    23.          3. Overriding the protected function getTileURL() to obtain the appropriate   
    24.          tiles and place them accurately on the map.   
    25.          4. Using the extended class with MXML or ActionScript :)   
    26.     -->   
    27.   
    28.     <esri:Map id="myMap">   
    29.         <samples:PortlandTiledMapServiceLayer id="virtualTiles" fadeInFrameCount="12"/>   
    30.     </esri:Map>   
    31.   
    32.     <s:Label width="85%"  
    33.              backgroundColor="0xFFFF00"  
    34.              color="0x000000"  
    35.              fontSize="14"  
    36.              fontWeight="bold"  
    37.              horizontalCenter="0"  
    38.              paddingBottom="10"  
    39.              paddingLeft="10"  
    40.              paddingRight="10"  
    41.              paddingTop="10"  
    42.              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."/>   
    43. </s:Application>  
  • 相关阅读:
    java中volatile关键字的含义
    2019年个人总结
    跟随Javac代码来解答字节码的疑惑
    Python装饰器实现带参数和不带参数
    try with resource当中你没有注意到点。。
    IDEA中,已经被加到版本库的文件如何在提交的时候忽略它们
    连接mysql客户端报错: java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'
    从字节码层次看i++和++i
    对lambda表达式的字节码实现个人理解
    解决mvn clean install的报错The packaging for this project did not assign a file to the build artifact
  • 原文地址:https://www.cnblogs.com/moonvan/p/2554094.html
Copyright © 2011-2022 走看看