035:vue+leaflet直接加载图片缩放,不需要地图底图

本文由大剑师兰特撰写,他是一名GIS领域的高级前端工程师,分享了如何在Vue+Leaflet环境下,不依赖地图底图直接加载并缩放图片的方法。该教程介绍了配置步骤和源代码,适用于平面地图应用,如游戏地图。通过简单的CRS映射,实现了经度和纬度到x、y轴的转换,且注意y轴需要反转。只需复制源代码,即可快速实现效果。

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

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,优快云知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。

查看本专栏目录 - 本文是第 035个示例

一、示例效果图

二、示例简介

本示例演示如何在vue+leaflet直接加载图片缩放,不需要地图底图。将经度和纬度直接映射到 x 和 y 的简单 CRS。 可用于平面地图(例如游戏地图)。 请注意,y 轴仍应反转(从下到上)。

直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果

三、配置方式

1)查看基础设置:http

### 实现带有天气要素的深色地 为了实现在 Vue3 中集成 Leaflet 并展示带天气要素的地,可以按照如下方法操作: #### 安装依赖库 首先,在项目中安装必要的 npm 包来支持 Vue3 和 Leaflet 的工作。 ```bash npm install leaflet @vue-leaflet/vue-leaflet axios ``` 这会引入 `Leaflet` 地库及其对应的 Vue 组件封装[@vue-leaflet/vue-leaflet][^1]以及用于获取外部 API 数据(比如天气信息)的工具包 `axios`. #### 创建组件并初始化地实例 接着创建一个新的 Vue 单文件组件用来承载地逻辑: ```html <template> <div id="mapContainer"></div> </template> <script setup lang="ts"> import { ref, onMounted } from 'vue'; import L from 'leaflet'; import '@vue-leaflet/vue-leaflet/dist/style.css'; const mapRef = ref(null); onMounted(() => { const osmUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', osmAttribution = '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors | Weather data provided by OpenWeatherMap', darkLayerURL = "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png"; let map = L.map(mapRef.value).setView([51.505, -0.09], 13); // 添加底瓦片层 (使用CartoDB Dark Matter样式) L.tileLayer(darkLayerURL, { attribution: osmAttribution, subdomains: ['a', 'b', 'c'], maxZoom: 18 }).addTo(map); }); </script> <style scoped> #mapContainer { height: 400px; } </style> ``` 上述代码片段展示了如何通过设置同的 URL 来加载同风格的地切片服务。这里选择了 CartoDB 提供的一个暗色调主题作为背景[^2]. #### 获取实时气象数据并与地关联显示 对于动态更新的天气标或其他可视化效果,则需调用第三方API(如OpenWeatherMap),并将返回的数据解析后绑定到特定位置上绘制出来。 ```javascript async function fetchWeatherData(latlng){ try{ const response = await axios.get(`http://api.openweathermap.org/data/2.5/weather?lat=${latlng.lat}&lon=${latlng.lng}&appid=YOUR_API_KEY`); console.log(response.data); // 处理接收到的信息... }catch(error){ console.error('Error fetching weather:', error); } } // 假设有一个按钮点击事件触发此函数去请求当前位置附近的天气状况. document.getElementById('getWeather').addEventListener('click', () => { var latlng = map.getCenter(); fetchWeatherData(latlng); }) ``` 这段 JavaScript 负责向指定坐标发起 HTTP 请求取得最新的气候条件报告,并打印至控制台以便后续处理。注意替换掉示例中的 YOUR_API_KEY 字符串为你自己的有效密钥[^3].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还是大剑师兰特

打赏一杯可口可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值