openlayers加载切片地图

简介:

使用的软件是tilemile。openlayers2和openlayers3加载切片地图使用的接口是不同的。下面做分析。

openlayers2:

layerName为图层名字,tileUrl为切片所在路径

function getTileLayerFunc(layerName,tileUrl){
	var mapMinZoom = 16;
    var mapMaxZoom = 23;
    var mapBounds = new OpenLayers.Bounds( 120.215163348, 30.2106933606, 120.216941889, 30.2125873624);
	
    //新建切片图层
    var tileLayer = new OpenLayers.Layer.TMS( layerName, "",
            {
                serviceVersion: '.', 
                layername: layerName, 
                alpha: true,
				type: 'jpg', 
				getURL: overlay_getTileURL
            });

		//获取每个小切片路径函数
        function overlay_getTileURL(bounds) {
			bounds = this.adjustBounds(bounds);
            var res = this.map.getResolution();
            var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));
            var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h));
            var z = this.map.getZoom();
			var path = tileUrl+"/_alllayers/" + z + "/" + x + "/" + y + "." + this.type+"?time="+new Date().getTime();
			var url = tileUrl+"/_alllayers/";
			
	        if (mapBounds.intersectsBounds( bounds ) && z >= mapMinZoom && z <= mapMaxZoom) {
              
	        	return path;
	        } else {
//               return "http://www.maptiler.org/img/none.png";
            }
        }
		
	
    //返回切片图层
	//return tileLayer;
   
	map.addLayer(tileLayer);
	tileLayer.setZIndex(0);
}

openlayers3:

layerName为图层名字,tileUrl为切片所在路径

function getTileLayerFunc(layerName,tileUrl){
	var projectionExtent = Map.projection.getExtent();
	var maxResolution = ol.extent.getWidth(projectionExtent) / (Map.tileSize * 2);
	var resolutions = new Array(23);
	var z;
	for (z = 0; z < resolutions.length; ++z) {
		resolutions[z] = maxResolution / Math.pow(2, z);
	}

	var urlTemplate = tileUrl+'/_alllayers/{z}/{x}/{y}.jpg'+"?time="+new Date().getTime();
	
	var tileLayer = new ol.layer.Tile({
		/* ol.source.XYZ and ol.tilegrid.TileGrid have no resolutions config */
		source: new ol.source.TileImage({
			tileUrlFunction: function(tileCoord, pixelRatio, projection) {
			var z = tileCoord[0];
			var x = tileCoord[1];
			var y = Math.pow(2, z) + tileCoord[2];
			// wrap the world on the X axis
			var n = Math.pow(2, z + 1); // 2 tiles at z=0
			x = x % n;
			if (x * n < 0) {
				// x and n differ in sign so add n to wrap the result
				// to the correct sign
				x = x + n;
			}
			return urlTemplate.replace('{z}', z.toString())
			.replace('{y}', y.toString())
			.replace('{x}', x.toString());
			},
			projection: Map.projection,
			tileGrid: new ol.tilegrid.TileGrid({
				origin: ol.extent.getTopLeft(projectionExtent),
				resolutions: resolutions,
				tileSize: Map.tileSize
			})
		}),
		name:layerName
	});
	
	//return tileLayer;
	
	map.addLayer(tileLayer);
	//tileLayer.setZIndex(0)
}


相关文章
|
11月前
|
定位技术 API
Cesium开发:关于加载CGCS2000切片
Cesium开发:关于加载CGCS2000切片
453 0
|
11月前
|
XML 存储 JavaScript
Echarts实战案例代码(18):GIS地图中GeoJson、TopoJson、SVG、SHP、JS常见格式相互转化的基础知识
Echarts实战案例代码(18):GIS地图中GeoJson、TopoJson、SVG、SHP、JS常见格式相互转化的基础知识
351 0
|
11月前
|
数据可视化 JavaScript 定位技术
Echarts参数属性学习:地图可视化视觉映射组件visualMap数组最大值max的获取方式
Echarts参数属性学习:地图可视化视觉映射组件visualMap数组最大值max的获取方式
339 0
|
11月前
|
JSON 前端开发 程序员
Echarts地图坐标geoCoordMap后台生成动态获取的解决方案2
Echarts地图坐标geoCoordMap后台生成动态获取的解决方案2
170 0
|
11月前
|
JSON 前端开发 定位技术
Echarts地图坐标geoCoordMap后台生成动态获取的解决方案
Echarts地图坐标geoCoordMap后台生成动态获取的解决方案
122 0
|
11月前
|
存储 资源调度 JavaScript
2.Vue3中Cesium地图初始化及地图控件配置
本文中,我们主要介绍 Cesium 在 Vue 3运行环境的配置,以及 Cesium 实例中控件的显隐设置,本文是后续文章内容的基础,项目代码在此查看;通过本文,我们可以得到一个纯净的 cesium 项目,后续的操作我们就可以在此基础上进行;
440 0
|
11月前
|
JavaScript API 定位技术
WebGis——从零开始vue使用cesium添加多个图层以及坐标转化(三)
WebGis——从零开始vue使用cesium添加多个图层以及坐标转化(三)
|
XML JSON 数据可视化
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)
467 0
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)
|
数据可视化 定位技术
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)2
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)
438 0
怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)2
|
定位技术
在地图上基于OpenLayers实现点/线/面静态的绘制显示
在地图上基于OpenLayers实现点/线/面静态的绘制显示
575 0
在地图上基于OpenLayers实现点/线/面静态的绘制显示