Openlayers加载水晶注标准TMS瓦片

本文介绍了一种使用OpenLayers库加载TMS(Tiled Map Service)格式的地图瓦片的方法。通过计算不同层级的分辨率并设置正确的瓦片URL,可以实现在特定地理坐标系(EPSG:4326)下的地图显示。文章提供了具体的JavaScript代码实现,包括如何配置图层源、定义瓦片网格等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此为个人测试可用,具体情况实时更改优化,仅供参考(版本:ol6):

/**
 * 水晶注 标准TMS 84 瓦片
 */

//1.计算每层分辨率 0-20
let resolution = [];
for (var i = 0; i <= 20; i++) {
	//256 瓦片宽度
	resolution[i] = 180.0 / 256.0 * 1.0 / Math.pow(2, i);
}

let layerTms = new ol.layer.Tile({
	source: new ol.source.XYZ({
		tileUrlFunction: function(tileCoord) {
			let z = tileCoord[0];
			let x = tileCoord[1];
			let y = Math.pow(2, z) - tileCoord[2] - 1;
			//http://127.0.01:22222/mapdata/tms/  为TMS地址
			return 'http://127.0.0.1:22222/mapdata/tms/' + z + '/' + x + '/' + y + '.jpg';
		},
		projection: 'EPSG:4326',
		tileGrid: new ol.tilegrid.TileGrid({
			//设置分辨率
			resolutiions: resolution,
			//设置中点
			origin: [-180, 90]
		}),
		wrapX: !0
	}),
	zIndex: 0,
	visible: true
});

let mhMap = new ol.Map({
	view: new ol.View({
		center: [110.5, 29.5],
		zoom: 3,
		minZoom: 3,
		maxZoom: 10,
		projection:'EPSG:4326'
	}),
	target:'map',
	projection:'EPSG:4326',
	layers:[layerTms]
})

### 使用 OpenLayers 实现水经效果 为了实现在 OpenLayers 中展示类似于水经的效果,可以考虑以下几个方面: #### 1. 创建基础地图并添加栅格图层 首先,在 `SampleForWGS84.html` 文件中初始化一个基本的地图实例,并通过 `ol.layer.Tile` 添加瓦片图层作为底图。这里可以选择使用 OSM 或其他公开可用的数据源。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Waterways Map with OpenLayers</title> <!-- 引入OpenLayers库 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@v7.0.0/ol.css" type="text/css"/> <script src="https://cdn.jsdelivr.net/npm/ol@v7.0.0/dist/ol.js"></script> <style> .map { width: 100%; height: 600px; } </style> </head> <body> <div id="map" class="map"></div> <script type="text/javascript"> // 初始化地图对象 const map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([116.4074, 39.9042]), // 设置中心点为北京 zoom: 10 // 初始缩放级别 }) }); </script> </body> </html> ``` #### 2. 加载河流矢量数据 接着,利用 GeoJSON 格式的河流数据来构建矢量图层。这些数据可以从第三方获取或是自定义绘制。对于中国境内的主要河流,可以通过官方渠道获得权威地理信息资源。 ```javascript fetch('path_to_rivers.geojson') .then(response => response.json()) .then(data => { const vectorSource = new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(data), }); const riverLayer = new ol.layer.Vector({ source: vectorSource, style: function(feature){ return new ol.style.Style({ stroke: new ol.style.Stroke({color: '#0D47A1', width: 3}) }); } }); map.addLayer(riverLayer); }); ``` #### 3. 配置辅助网格(可选) 如果希望进一步增强视觉体验,可以在地图上叠加经纬度网格线,这有助于用户更好地理解地理位置关系。 ```javascript const graticule = new ol.layer.Graticule({ map: map, step: [5, 5], // 经纬间隔设置为每五度一条线 strokeStyle: new ol.style.Stroke({ color: '#ccc', width: 1 }), showLabels: true // 显示坐标标签 }); ``` 以上代码片段展示了如何结合 OpenLayers 库创建一张带有河流特征的地图视图[^1]。值得意的是,实际应用过程中可能还需要处理更多细节问题,比如优化性能、调整样式以及集成交互功能等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A 壹零贰肆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值