Openlayer 3加载本地ArcGIS切片

时间:2023-03-09 17:55:04
Openlayer 3加载本地ArcGIS切片

第一篇博客,简单的开个头吧。希望自己能坚持记录。一般什么情况什么人需要这样的需求呢,伐木的光头强大哥说我们在深山老林里,没网的啊,地图就手机本地duang的加载一下吧。那么Server啊就要丢掉丢掉。丢掉手表丢掉外套,丢掉背包再丢掉唠叨,咳咳,跑题了。来看看具体步骤吧,非常简单但详细。

1. 制作切片的数据基本信息如下:

图层数据信息:

地理坐标系:  GCS_WGS_1984

基准面:          D_WGS_1984

本初子午线:              Greenwich

角度单位:     Degree

数据框信息:

GCS_WGS_1984

WKID: 4326 权限: EPSG

2.设置的缓存方式如下:(缓存切片方案ArcGIS online/Bing/google),缓存级别10-16;高级设置:切片原点默认,存储格式松散型EXPLODED。

Openlayer 3加载本地ArcGIS切片

Openlayer 3加载本地ArcGIS切片

3.发布切片服务前先分析一下结果:(无错误)

Openlayer 3加载本地ArcGIS切片

4.发布完成后可以登录ArcGIS server查看缓存的相关信息或者在本地的缓存文件夹arcgiscache中查看缓存的信息:

Openlayer 3加载本地ArcGIS切片

5.缓存好的本地文件,文件命名方式是16进制:

Openlayer 3加载本地ArcGIS切片

6.测试代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ol加载ArcGIS本地切片</title>
<link rel="stylesheet" href="ol.css">
<script src="ol.js"></script>
</head>
<body>
<div id="map"></div>
<script type="text/javascript">
// 设置寻甸县为地图中心,此处进行坐标转换, 把EPSG:4326的坐标,转换为EPSG:3857坐标,因为ol默认使用的是EPSG:3857坐标
pos = ol.proj.transform([103.25, 25.56], 'EPSG:4326', 'EPSG:3857');
//alert(pos);
//创建地图
var map = new ol.Map({
view: new ol.View({
center:pos,
zoom: 10
}),
//添加open street map图层
layers:[
new ol.layer.Tile({
source:new ol.source.OSM()
})
],
//将地图添加到的map容器中
target: 'map'
});
//给8位字符串文件名补0
function zeroPad(num, len, radix) {
var str = num.toString(radix || 10);
while (str.length < len) {
str = "0" + str;
}
return str;
}
// ol.source.XYZ添加瓦片地图的层
var tileLayer = new ol.layer.Tile({
source: new ol.source.XYZ({
tileUrlFunction: function (tileCoord) {
//alert(tileCoord[0] + " X= " + tileCoord[1] + " Y= " + tileCoord[2]);
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 '_alllayers/' + z + '/' + y + '/' + x + '.png';
},
projection: 'EPSG:3857'
})
});
map.addLayer(tileLayer);
</script>
</body>
</html>

7.调试的结果:

Openlayer 3加载本地ArcGIS切片