有时候我们的切片数据是用ArcGIS配图后切的,或者是用地图下载器的ArcGIS切片的格式,项目需要用openlayers3,目前我用了三种方式来使用已有的ArcGIS切片。
1.使用发布工具发布,然后自己拼URL地址
使用IIS或者Tomcat发布切片,通过url可以访问到每个切片就可以。这种方法不需要读切片的配置文件,但是要知道切片的坐标系。
(需要说明的是每个版本的openlayers规则都可能不同,需要在此基础上进行微调)
var tileLayer = new ol.layer.Tile({
source: new ol.source.XYZ ({
tileUrlFunction: function(tileCoord) {
var x = 'C'+zeroPad(tileCoord[1],8,16);
var y = 'R'+zeroPad(-tileCoord[2]-1,8,16);
var z = 'L'+zeroPad(tileCoord[0],2,10);
return url+'/'+z+'/'+y+'/'+x+'.png';
},
projection: 'EPSG:3857'
})
});
function zeroPad(num,len,radix){
var str = num.toString(radix || 10);
while(str.length<len){
str = "0"+ str;
}
return str;
}
2.使用GeoWebcache发布WMS服务,然后调用
见我的另外一篇博文 http://blog.csdn.net/u014529917/article/details/52241982
3.使用ArcGIS Server发布
这种方法看起来不太严谨,但是亲测可行。
a.设置空的mxd文档,空的mxd的文档空间参考和范围必须按照已经切片好的服务设置
b.发布空的mxd文档的服务
c.在发布窗口,右键发布的mxd文档-服务属性-缓存,设置和切片相同的缓存选项,启动创建切片。
d.取消创建切片
e.拷贝已有切片,覆盖新创建的切片
此时访问该服务,访问到的就是原有的切片了。
调用方法代码:
var arcgisTileLayer = new ol.layer.Tile({
source: new ol.source.TileArcGISRest({
url: 'http://localhost:8399/arcgis/rest/services/test/MapServer' --ArcGIS Server服务地址
})
})
结束,有不对的欢迎指正!