快速上手Leaflet:轻松创建你的第一个交互地图

环境准备

此前使用的是vite快速搭建的项目框架,在这里就不过多赘述了。

在这里使用npm的方式导入leaflet包

node 复制代码
npm install leaflet

全局引入

因为涉及项目需要用到的地图界面很多,所以就直接在main.js文件中全局引入

js 复制代码
// 引入Leaflet库
import L from "leaflet";

创建基础地图

初始化HTML容器。

html 复制代码
 <div id="my_map"></div>

在这里一定要给地图容器设置宽高,不然会报错

通过Leaflet API创建地图实例并设置初始视图(中心点坐标、缩放级别)。

js 复制代码
const map_ref= ref(null);//地图实例
// 天地图服务地址
const TDT_provider = (key) => {
  return `http://t0.tianditu.gov.cn/${key}_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${key}&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=个人申请的天地图开发者密钥`;
};
// 初始化地图
const initMap = () => {
  const base_layer_option = {
    maxZoom: 18.0,
    minZoom: 4.0,
  };
  // 创建地图层
  const base_layer_ref = L.tileLayer(
    TDT_provider("img"),//影像底图
    base_layer_option
  );
  // 创建包含标注信息的地图层
  const label_layer_ref = L.tileLayer(
    TDT_provider("cia"),//影像注记
    base_layer_option
  );
   // 检查并销毁旧的地图实例
   let mapContainerA = L.DomUtil.get("my_map");
   if (mapContainerA !== null) {
    mapContainerA._leaflet_id = null; // 清除旧的 Leaflet ID
   }
   // 初始化地图
   map_ref= L.map("my_map", {
   center: [29.5446061089, 106.530635013],
   current_zoom: 8.0,
   zoom: 8.0,
   // 禁用默认的缩放控制器
   zoomControl: false,
   // 禁用版权信息控件
   attributionControl: false,
   // 设置地图显示范围
   maxBounds: L.latLngBounds(
   L.latLng(60.20689, 58.76758),
   L.latLng(0.03133, 150.81885)
   ),
   // 设置默认添加到地图上的图层组
   layers: [base_layer_ref , label_layer_ref ], //将影像地图和注记添加到地图中
  })

};

添加地图图层

这里我是用的是天地图的底图服务,上述代码已有,具体获取方式可以查看官方文档:天地图的地图api 示例代码中的开发者密钥可自行去天地图官网申请天地图统一身份认证平台。 如此,一个简单的地图容器便已经搭建好了

标记与交互

添加标记点(L.marker

js 复制代码
var marker = L.marker([51.5, -0.09]).addTo(map_ref);

具体也可参照官方教程leaflet中文版官方教程

新手刚开始尝试,慢慢摸索,感谢各位大佬前辈的经验,[后续我也会分享自己的一些成果]

相关推荐
华玥作者17 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_18 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠18 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang2015092818 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC19 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务19 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整20 小时前
面试点(网络层面)
前端·网络
VT.馒头20 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy21 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron07071 天前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js