OpenLayers学习--加载ArcGIS缓存

数据准备

使用ArcGIS发布地图,并切图得到松散的缓存瓦片数据,一般存储路径为:C:\arcgisserver\directories\arcgiscache

使用ArcGIS10.2之前的ArcGIS Server数据目录可能不一样,请自己找到arcgiscache 文件夹。

本实例使用的缓存配置如下图:

OpenLayers学习--加载ArcGIS缓存_第1张图片

发布数据

本步骤主要目的是将ArcGIS缓存的瓦片发布的到服务器上,使外网可以访问到瓦片数据。

将缓存路径发布的IIS上(路径为:http://localhost:9999),如下图:

OpenLayers学习--加载ArcGIS缓存_第2张图片

加载缓存类(该类可以加载任何ArcGIS发布的数据)

关键步骤就是重现getURL()方法,当地图刷新的时候可以找到服务器中切片存放的路径。

OpenLayers加载缓存文件的代码如下:

        OpenLayers.Layer.ESRICache = OpenLayers.Class(OpenLayers.Layer.TMS, {

            tileOriginCorner: 'tl',

            type: 'png',

            initialize: function (name, url, options) {

                OpenLayers.Layer.TMS.prototype.initialize.apply(this, [name, url,options]);
            },

            getURL: function (bounds) {
                var z = map.getZoom();
                var res = map.getResolution(z);
                var x = parseInt((bounds.getCenterLonLat().lon - this.tileOrigin.lon) / (256 * res));
                var y = parseInt((this.tileOrigin.lat - bounds.getCenterLonLat().lat) / (256 * res));

                x = 'C' + OpenLayers.Number.zeroPad(x, 8, 16);
                y = 'R' + OpenLayers.Number.zeroPad(y, 8, 16);
                z = 'L' + OpenLayers.Number.zeroPad(z, 2, 10);

                return this.url + z + '/' + y + '/' + x + '.' + this.type;
            },

        });

使用示例

初始化地图图层:

        var esri = new OpenLayers.Layer.ESRICache("ArcGIS缓存", 'http://localhost:9999/',
           {
               resolutions: [
                          0.01903568804664224,
                          0.00951784402332112,
                          0.00475892201166056,
                          0.00237946100583028,
                          0.00118973050291514
               ],
               maxExtent: [103.59974, 24.621635, 109.55483, 29.224079],
               tileOrigin: new OpenLayers.LonLat(-400, 400)
           });

初始化地图:

            map = new OpenLayers.Map('map', {
                projection: "EPSG:4326",
                displayProjection:"EPSG:4326",
                //maxExtent: [103.59974, 24.621635, 109.55483, 29.224079],
                controls:[]
            });
            
            map.addLayer(esri);

OK,打开浏览器查看地图

你可能感兴趣的:(GIS,开源,OpenLayers)