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)
}
时间: 2025-01-11 09:50:01

openlayers加载切片地图的相关文章

openlayers 加载mapserver 地图问题 瓦片显示结果不正确啊

问题描述 <htmlxmlns="http://www.w3.org/1999/xhtml"><head><styletype="text/css">#map{width:100%;height:99%;border:1pxsolidblack;}body{padding:0px;margin:2px}#labs{position:absolute;bottom:15px;left:7px;font-size:smaller;z-

ArcGIS API for Silverlight加载google地图(后续篇)

原文:ArcGIS API for Silverlight加载google地图(后续篇) 之前在博客中(http://blog.csdn.net/taomanman/article/details/8019687)提到的加载google地图方案,因为google地址问题,看不到图了,发现是url地址变换造成的. 现将如下三个类公布出来,源码如下:   using System; using System.Net; using System.Windows; using System.Window

android的百度离线地图无法加载离线地图包

问题描述 android的百度离线地图无法加载离线地图包 我是先将从官网下载的离线包解压,把vmp文件夹拷入SD卡根目录下的BaiduMapSDK文件夹内 在程序加载时调用本地的离线地图包,但总是提示无法加载离线地图包. 请高手指点一下什么原因. /** 离线地图初始化 **/ mOffline = new MKOfflineMap(); mOffline.init(new MKOfflineMapListener() { public void onGetOfflineMapState(int

Yii实现自动加载类地图的方法_php实例

本文实例讲述了Yii实现自动加载类地图的方法.分享给大家供大家参考.具体如下: Yii继承的一个静态属性$classMap,可以用于Yii的自动加载类地图.数组中的键是类名,数组中的值是相应类文件的路径. require_once($yii); $app = Yii::createWebApplication($config); Yii::$classMap = array( 'JPhpMailer' => Yii::getPathOfAlias('ext') . '/phpmailer/JPh

基于C#winform下Gmap怎么加载离线地图

问题描述 基于C#winform下Gmap怎么加载离线地图 大神求助 Gmap怎么加载离线地图 用Demo.WindowsForms做了离线包 mapControl1.CacheLocation = @"D:GMap.NET" mapControl1.Manager.Mode = AccessMode.CacheOnly; 这个方法不行啊 说是no data in local title cache 本地缓存中没有数据

怎么获取spinner的值,为什么无法加载出地图

问题描述 怎么获取spinner的值,为什么无法加载出地图 double x = 0;double y= 0;LatLng cenpt = new LatLng(xy); if(city[pos] == ""福州"" ){x =26.08;y=119.28; }else if (city[pos]==""上海""){x=31.213; y=121.445; } else if (city[pos]==""深

VC加载百度地图BMAP未定义

问题描述 VC加载百度地图BMAP未定义 请教为什么在VC里用窗口加载百度地图时会出现BMAP未定义啊????怎么解决?? 代码如下 解决方案 百度地图 异步加载百度地图API之地图加载方式(同步.异步) 解决方案二: vc是不是用的webbrowser控件,它只能支持简单的web页面.复杂页面经常出js错误等. 解决方案三: IE版本的问题,webbrowser在w7默认使用ie7内核,,所以太新的前端脚本是不支持的,必须手动改注册表的一个项才可以让webbrowser支持到ie11 解决方案

加载高德地图重写onCreate方法失败

问题描述 加载高德地图重写onCreate方法失败 解决方案 看看这篇的解决方法能不能帮到你<Android 高德地图 Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance>http://www.2cto.com/kf/201505/402180.html 解决方案二: armeabi少了 (⊙﹏⊙)b

如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)_jquery

ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息.ECharts官网提供了中国地图.世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图. 效果演示       源码下载 本文将结合实例讲解如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据,我们以中国地图为例,展示去年(2015年)我国各省份GDP数据.通过异步请求php,读取mysql中的数据,然后展示在地图上,因此本文除了你掌握前端知识外,还需要你了解PHP以及MySQL