MapLibre GL JS第8课:禁用滚动缩放

📌 学习目标

  • 掌握禁用滚动缩放的实现方法
  • 理解相关API的使用
  • 能够独立完成类似功能开发

🎯 核心概念

禁用滚动缩放功能。

💻 完整代码

代码示例

js 复制代码
const map = new maplibregl.Map({
    container: 'map', // 容器ID
    style: 'https://demotiles.maplibre.org/style.json', // 样式URL
    center: [-122.65, 45.52], // 初始位置
    zoom: 3 // 初始缩放级别
});

// 禁用滚动缩放地图
map.scrollZoom.disable();

代码示例

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Disable scroll zoom</title>
    <meta property="og:description" content="防止滚动缩放地图。" />
    <meta property="og:created" content="2023-06-27" />
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel='stylesheet' href='https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.css' />
    <script src='https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js'></script>
    <style>
        body { margin: 0; padding: 0; }
        html, body, #map { height: 100%; }
    </style>
</head>
<body>
<div id="map"></div>
<script>
    const map = new maplibregl.Map({
        container: 'map', // 地图容器id
        style: 'https://demotiles.maplibre.org/style.json', // 样式URL
        center: [-122.65, 45.52], // 初始位置
        zoom: 3 // 初始缩放级别
    });

    // 禁用滚动缩放地图
    map.scrollZoom.disable();
</script>
</body>
</html>

🔍 代码解析

1. 初始化地图

使用 new maplibregl.Map() 创建地图实例,需要配置容器、样式、中心点和缩放级别。

2. 关键配置项

  • container: 地图容器的DOM元素ID
  • style: 地图样式URL,可以使用MapLibre官方demo样式或自定义样式
  • center: 地图初始中心点 经度, 纬度
  • zoom: 初始缩放级别

⚙️ 参数说明

参数 类型 必填 说明
container string 地图容器ID
style string 地图样式URL
center number, number 初始中心点,默认0, 0
zoom number 初始缩放级别,默认0

🎨 效果说明

运行代码后,将在页面上显示一个交互式地图。用户可以通过鼠标拖拽移动地图,滚轮缩放被禁用 ,右键旋转视角。

💡 常见问题

Q1: 地图不显示怎么办?

A: 检查以下几点:

  1. 确认已正确引入MapLibre GL JS的CSS和JS文件
  2. 确认容器元素存在且有明确的高度
  3. 检查浏览器控制台是否有错误信息

Q2: 如何更换地图样式?

A: 修改 style 参数为其他样式URL,例如:

javascript 复制代码
style: 'https://demotiles.maplibre.org/style.json'

📝 练习任务

  1. 基础练习:尝试修改地图的中心点和缩放级别,观察效果
  2. 进阶挑战:添加地图控件(缩放控件、罗盘等)
  3. 拓展思考:如何实现地图的自动旋转效果?

🌟 最佳实践

  1. 始终设置容器高度: 地图容器必须有明确的高度,否则地图不会显示
  2. 使用CDN引入: 生产环境建议使用稳定的CDN链接
  3. 错误处理: 添加try-catch处理可能的初始化错误
  4. 响应式设计 : 监听窗口大小变化,调用 map.resize()

🔗 延伸阅读


本文是MapLibre GL JS实践课程系列的一部分,欢迎关注收藏

相关推荐
梦诺19 小时前
vue3 keepAlive+记录滚动条
前端·javascript·vue.js
天若有情67319 小时前
开源轻量双语工具|一键批量查询 NPM 包历史下载量,支持按作者批量统计
javascript·npm·github pages·开源工具·netlify·前端开源·npm克隆量
福兮说21 小时前
纯前端把图片压缩到指定体积:canvas.toBlob 配合二分查找
前端·javascript·canvas·图片处理
志尊宝21 小时前
Vue3 零基础每日笔记(018):按键与鼠标修饰符——回车搜索、Ctrl+S 保存这样写
javascript·vue.js·笔记
可乐鸡翅yeah_1 天前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线
开开心心就好1 天前
低年级识字练笔顺工具,电脑和安卓端都能用
前端·javascript·网络·安全·scala·erlang·语音识别
杨利杰YJlio1 天前
ITSK PE 26U5 测试版解读:组件完善、VMD 修复与服务器支持边界
前端·javascript·后端
夏幻灵1 天前
Vue / React 列表渲染中的 key:为什么没有 key,Checkbox 可能“对号跑错”?
前端·javascript·vue.js
YWL1 天前
vue-time-axis-plus进阶:双进度条+跨空白续播+播放指针,打造专业级监控回放体验
前端·javascript·vue·时间轴
岁岁种桃花儿1 天前
Vue组件第六篇:Vue单文件组件
开发语言·前端·javascript·vue.js