vue+leaflet : 从0 到1 搭建开发环境

本文档详细介绍了如何从头开始在Vue 2.x基础上搭建Leaflet地图应用的开发环境。首先,你需要下载并安装Node.js,然后通过npm安装Vue CLI。接着,使用Vue CLI创建一个名为vue-leaflet的项目,并安装Leaflet地图库。可选地,你可以安装Element UI以方便添加交互元素。最后,启动项目,浏览器中将显示你的第一个地图。

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

在这里插入图片描述
本系列教程是在vue2.X的基础上加载leaflet 程序,来开发各种示例程序。

一、懒人配置安装包(下载、安装、运行)

项目包下载地址:https://download.csdn.net/download/cuclife/90165644

下载后解压文件
然后 安装:npm install
接着 运行:npm run serve

二、一步步顺序安装

1,下载安装nodejs


下载地址:https://nodejs.org/en/download/ 根据用户自己的机器情况进行选择不同版本的软件下载。 本教程示例采用是是windows 64位系统软件。
安装过程很简单,一路下一步。更为详细的请参考:http://www.openlayers-cesium.com/0929744.html
安装成功,测试安装是否成功,运行CMD,分别输入
node -v
npm -v 分别查看node和npm的版本号。
可以查到,表示安装成功。

2,安装vue-cli

安装可以参考:https://cli.vuejs.org/zh/guide/installation.html
安装命令:

npm install -g @vue/cli
或者 yarn global add @vue/cli (尽量不用这种方式,yarn不会自己配置环境变量,运行vue -V会提示错误)


安装完后,可以通过 vue -V或者 vue --version 查看当前 vue-cli的版本号。

3,创建vue-leaflet 项目。

在系统中找一个文件夹,如d:/demos中,打开cmd窗口,使用 **vue create vue-leaflet ** 来创建基础项目

在项目中选择了 vue-router和vuex,方便以后的路由和组件数据传递使用方便。

4,安装leaflet

进入到vue-leaflet 文件夹中, 打开cmd窗口,使用 npm install leaflet --save 来安装leaflet 组件

5,安装element UI (选装)

为了在项目中操作方便,我们直接引用elementUI组件,方便添加一些按钮,弹窗等。
进入到vue-leaflet 文件夹中, 打开cmd窗口,使用 npm i element-ui -S 来安装elementUI组件
在src/main.js中添加

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

最终package.json文件如下:

打开src/views/Home.vue,替换为以下代码:

<template>
	<div class="container">
		<h3>vue+leaflet: 加载openstreetmap</h3>
		<p>大剑师兰特, 还是大剑师兰特</p>
		<div id="vue-leaflet"></div>
	</div>
</template>

<script>
	export default {
		name: 'LeafletMap',
		data() {
			return {
				map: null
			}
		},
		mounted() {
			this.initMap()
		},
		methods: {
			// 使用id为vue-leaflet的div容器初始化地图
			initMap() {
				this.map = L.map("vue-leaflet", {
					center: [39.90562, 116.38840], // 中心位置 先纬度后经度
					zoom: 8, // 缩放等级
					attributionControl: true, // 版权控件
					zoomControl: true //缩放控件
				});
				L.tileLayer(
					"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
						maxZoom: 19,
						attribution: '&copy; <a href="https://openstreetmap.org/copyright">OpenStreetMap contributors</a>',
					}
				).addTo(this.map)
			}
		}
	}
</script>
<style scoped>
	.container {
		width: 840px;
		height: 580px;
		margin: 50px auto;
		border: 1px solid #42B983;
	}

	#vue-leaflet {
		width: 800px;
		height: 450px;
		margin: 0 auto;
		border: 1px solid #42B983;
		position: relative;
	}
</style>

进入到vue-leaflet 文件夹中, 打开cmd窗口,执行命令:
npm run serve
浏览器打开http://localhost:8080,就能显示我们的第一个地图。

在这里插入图片描述

No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】
6Shader 编程 【图文示例 100+】
7Geoserver 【配置教程 100+】
8卫星应用开发教程 【配置+应用教程 100+】
9GIS数字孪生与大模型 【应用实战 100+】
10报表与数字大屏 【Echarts 实战示例】 - 【D3 综合教程】 - 【其他大屏】
### Vue 3 中使用 Leaflet教程 #### 安装依赖包 为了在 Vue 3 项目中集成 Leaflet 地图库,需安装 `leaflet` 和适用于 Vue 3 的插件 `@vue-leaflet/vue-leaflet`。 ```bash npm install leaflet @vue-leaflet/vue-leaflet ``` 此命令会将所需的地图组件及其样式文件加入到项目里[^2]。 #### 创建地图容器并初始化 在模板部分定义一个用于承载地图的 `<client-only>` 或者简单的 div 元素作为占位符,在脚本内通过 `L.map()` 方法来实例化一个新的地图对象,并设置其视口位置与缩放级别。 ```html <template> <div ref="mapContainer" style="height: 400px;"></div> </template> <script setup> import "leaflet/dist/leaflet.css"; import L from "leaflet"; onMounted(() => { const map = L.map(this.$refs.mapContainer).setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); }); </script> ``` 这段代码展示了如何在一个 Vue 组件内部加载基础底图瓦片服务以及配置初始中心坐标和缩放比例。 #### 添加交互功能 对于更复杂的需求比如支持用户绘制图形、编辑现有要素或是响应鼠标点击事件等操作,则可以借助于额外的 JavaScript 插件如 `Leaflet.draw` 来增强应用的功能集。同时也可以利用官方提供的 API 文档探索更多可能性[^3]。 #### 图层管理 当涉及到不同类型的地理数据叠加显示时(例如矢量特征、影像覆盖物),可以通过构建自定义图层组或将各独立图层添加至默认的根图层上来实现分层效果。下面的例子说明了怎样向已有地图添加一张图片覆盖物: ```javascript const imageUrl = "/path/to/image.png"; // 替换成实际路径 const bounds = [[lat1, lon1], [lat2, lon2]]; // 设置图像边界范围 this.imageOverlay = L.imageOverlay(imageUrl, bounds).addTo(map); ``` 上述片段中的变量 `bounds` 需要被赋予具体的经纬度值以限定所加载资源的位置;而 `imageOverlay` 则代表新创建出来的图像型图层实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还是大剑师兰特

打赏一杯可口可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值