leaflet讲解:vue中使用leaflet加载wmts瓦片地图(1)

本文详细介绍了如何在Vue项目中利用Leaflet及其wmts插件加载离线瓦片地图,包括安装配置、地图加载及参数设置,为初学者提供了实用的代码示例。

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

哈喽大家好,很高兴在优快云博客跟大家第一次见面。前几天做了一个基于leaflet加载wmts瓦片离线地图的项目。发现由于VUE最近的兴起leafle并没有根据vue中如何使用它的教程。这对于我们这些小白很不友好所以我准备在这里分几个步骤为大家讲解。
今天我们就来先尝试使用leaflet加载瓦片地图。首页我们要在vue文件中安装leafle和leafle.wmts插件(注:leafle并不具备加载wmts功能)

npm install leaflet --save
npm install leaflet.wmts --save

等待leaflet成功安装好后我们需要在main.js中引用leaflet和leaflet.wmts

//Leaflet全局配置
import L from 'leaflet'
import 'leaflet/dist/leaflet.css'
import 'leaflet.wmts'
Vue.use(L)

下面在vue中使用他们。本次加载的wmts是我们本地用geoserver服务器搭建的wmts地址。

<template>
	<div id="app">
		<div id="map" />
	</div>
</template>
<script>
	export default {
		data() {
			return {}
		},
		mounted() {
			this.leafletMap()
		},
		methods: {
			leafletMap() {

				//设置地图相关初始配置
				var leafletMap = L.map("map", {
					 center: [30.279751,119.727856],// 设置地图中心点
					zoom: 1, //设置当前地图显示的缩放等级
					crs: L.CRS.EPSG4326 //设置坐标系4326
				})

				//设置地图可以进行0-22的等级缩放
				var matrixIds = [];
				for (var i = 0; i < 22; ++i) {
					matrixIds[i] = {
						identifier: "" + i,
						topLeftCorner: new L.LatLng(90, -180)
					};
				}

				//设置地图wmts瓦片地图加载配置
				var urlMap= 'http://192.168.11.25:6080/arcgis/rest/services/WMTS'//瓦片地图地址
				var wmtsOptionsMap = {
					layer: 'hangzhou:MapServer',//瓦片地图名称
					tileSize: 256, //切片大小
					format: "image/png",//瓦片图格式
					matrixIds: matrixIds,//可缩放
				}
				var wmtsMap = new L.TileLayer.WMTS(urlMap, wmtsOptionsMap)
				leafletMap.addLayer(wmtsMap)
			}
		}
	}
</script>
<style>
	#map {
		width: 100%;
		height: 100vh;
	}
</style>

下面是效果图
leaflet:加载wmts地图
可以看到地图已经加载完成。如果大家有什么疑问可以留言交流。

### 集成 SuperMap iClient for LeafletVue 项目 #### 安装必要的依赖库 为了在 Vue 项目中集成并使用 SuperMap iClient for Leaflet,首先需要安装基础的地图库 `leaflet` 和特定于超图的扩展包 `@supermap/iclient-leaflet`。通过命令行工具执行以下操作可以完成这些软件包的安装: ```bash npm install leaflet --save npm install @supermap/iclient-leaflet --save ``` 此外,在现代前端框架Vue 中推荐采用按需加载的方式引入组件以优化性能,因此还需要安装 Babel 插件用于支持模块化导入: ```bash npm install @supermap/babel-plugin-import -D ``` 以上步骤确保了项目能够正确识别和处理来自 SuperMap 的地理空间数据服务[^1][^2]。 #### 初始化地图实例 一旦所有必需的依赖项都已成功添加到项目当中,则可以在 Vue 组件内部初始化一个新的 L.Map 对象作为底图容器,并设置其初始视图参数(中心点经纬度以及缩放级别)。下面是一个简单的例子展示如何创建一个基本的地图对象: ```javascript import { onMounted } from 'vue'; import * as L from 'leaflet'; export default { setup() { let map; onMounted(() => { const center = [39.9087, 116.3975]; // 北京市经纬度坐标 const zoomLevel = 13; // 地图默认显示比例尺 // 创建地图实例并挂载至指定DOM节点上 map = L.map('map').setView(center, zoomLevel); // 添加瓦片层作为背景地图 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); console.log("地图已经成功加载"); }); return {}; } } ``` 这段代码展示了如何利用生命周期钩子函数 `onMounted()` 来确保 DOM 已经完全渲染后再尝试访问页面上的元素;同时也演示了怎样向地图添加开放街道地图 (OSM) 提供的基础矢量切片服务。 #### 加入SuperMap 数据源和服务调用 当完成了上述准备工作之后就可以进一步探索更多高级特性了,比如连接到远程 GIS 平台获取动态更新的数据集或者执行空间查询分析任务等等。这里给出一段示范性的 JavaScript 片段说明如果借助 SuperMap REST API 获取 WMTS 图像资源并将它们叠加绘制出来: ```javascript // 假设已经在前面定义好了全局变量'map' const wmtsUrlTemplate = "http://localhost:8090/iserver/services/map-world/rest/maps/World/wmtscache"; L.supermap.tiledMapLayer(wmtsUrlTemplate).addTo(map); console.log("WMTS图层已被添加到当前地图!"); ``` 此部分实现了从本地部署的服务端口请求世界范围内的栅格图像片段,并将其无缝拼接在一起形成完整的全球视野[^3]。 #### 解决可能出现的问题 值得注意的是,在某些情况下按照官方文档指引配置天地图影像可能会遇到兼容性障碍。这是因为不同版本之间可能存在细微差异导致预期行为无法正常工作。针对此类情况建议开发者仔细阅读相关技术博客文章寻找解决方案,例如调整坐标转换逻辑或修改样式表规则等措施均有助于克服潜在困难[^4]。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SoberChi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值