openlayers 加载ArcGIS 切片地图

我这里使用的版本是openlayers 3.11.1

主要的方式是使用 ol.source.XYZ 这个类来加载 切片,ArcGIS生成切片的目录文件的方式为:
\L10\R00000181\C0000034a.png

其中 10 为地图的缩放比例,00000181和’0000034a’ 分别是十六进制的 切片横纵坐标,也就是说我们按照这个规律就可以加载到对应的切片,然后将加载的切片拼接成图层加载到map对象就ok了。

核心代码:

// ol.source.XYZ添加瓦片地图的层
    var tileLayer = new ol.layer.Tile({
        source: new ol.source.XYZ({
            tileUrlFunction: function (tileCoord) {
                console.log(tileCoord);
                //alert(tileCoord[0] + " X= " + tileCoord[1] + " Y= " + tileCoord[2]);
                var oo = "00000000";
                var zz = tileCoord[0];
                var z = "L" + zz;
                var xx = tileCoord[1].toString(16);
                var x = "C" + oo.substring(0, 8 - xx.length) + xx;
                var yy = (-tileCoord[2] - 1).toString(16); //注意此处,计算方式变了
                var y = "R" + oo.substring(0, 8 - yy.length) + yy;
                return  'C:\\arcgisserver\\directories\\arcgiscache\\test1\\Layers\\_alllayers/' + z + '/' + y + '/' + x + '.png';
            },
            projection: 'EPSG:3857'
        })
    });
    map.addLayer(tileLayer);

有一点需要注意的是,默认的缩放级别是从 0~28,如果对应级别没有自己的切片的话,控制台就会报找不到切片,这个还没处理,可以控制一下最大最小的缩放级别和范围。
openlayers 加载ArcGIS 切片地图_第1张图片

效果示例:我这里还加了一个OSM地图的底图,网络好的时候加载很快,网差的时候就慢点

openlayers 加载ArcGIS 切片地图_第2张图片

你可能感兴趣的:(WebGIS,openlayers3)