【Mapbox GL JS 入门】(6)User interaction handlers 用户交互

本文详细介绍地图应用程序中各种交互控制方式的使用方法,包括滚轮缩放、框选缩放、拖动旋转、拖动平移等功能,并介绍了如何通过键盘快捷键进行地图操作。

scrollZoom

ScrollZoomHandler, 使用滚轮或触控板实现放大和缩小

// Speed up trackpad zoom
map.scrollZoom.setZoomRate(1 / 25);
// Slow down zoom of mouse wheel
map.scrollZoom.setWheelZoomRate(1 / 600);
const isScrollZoomEnabled = map.scrollZoom.isEnabled();
map.scrollZoom.enable();
map.scrollZoom.enable({around: 'center'});
map.scrollZoom.disable();

boxZoom

BoxZoomHandler, 按下Shift键时使用拖动手势缩放

const isBoxZoomEnabled = map.boxZoom.isEnabled();
const isBoxZoomActive = map.boxZoom.isActive();
map.boxZoom.enable();
map.boxZoom.disable();

dragRotate

DragRotateHandler, 使用鼠标右键或按下控制键拖动时旋转地图

map.dragRotate.enable();
map.dragRotate.disable();
const isDragRotateEnabled = map.dragRotate.isEnabled();
const isDragRotateActive = map.dragRotate.isActive();

dragPan

DragPanHandler, 用鼠标或触摸手势拖动地图

map.dragPan.enable();
map.dragPan.enable({
    linearity: 0.3,
    easing: t => t,
    maxSpeed: 1400,
    deceleration: 2500
});
map.dragPan.disable();
const isDragPanEnabled = map.dragPan.isEnabled();
const isDragPanActive = map.dragPan.isActive();

keyboard

KeyboardHandler, 允许用户使用键盘快捷键缩放、旋转和平移地图

  • = / +: 缩放级别+1.
  • Shift-= / Shift-+: 缩放级别+2.
  • -: 缩放级别-1.
  • Shift–: 缩放级别-2.
  • Arrow keys: 平移100像素.
  • Shift+⇢: 逆时针旋转15°.
  • Shift+⇠: 顺时针旋转15°.
  • Shift+⇡: 仰角+10°.
  • Shift+⇣: 俯角+10°.
map.keyboard.enable();
map.keyboard.disable();
const isKeyboardEnabled = map.keyboard.isEnabled();
const isKeyboardActive = map.keyboard.isActive();
map.keyboard.disableRotation();
map.keyboard.enable();
map.keyboard.enableRotation();

doubleClickZoom

DoubleClickZoomHandler, 双击缩放

map.doubleClickZoom.enable();
map.doubleClickZoom.disable();
const isDoubleClickZoomEnabled = map.doubleClickZoom.isEnabled();
const isDoubleClickZoomActive = map.doubleClickZoom.isActive();

touchZoomRotate

TouchZoomRotateHandler, 使用触摸手势缩放、旋转地图

map.touchZoomRotate.enable();
map.touchZoomRotate.enable({around: 'center'});
map.touchZoomRotate.disable();
const isTouchZoomRotateEnabled = map.touchZoomRotate.isEnabled();
const isTouchZoomRotateActive = map.touchZoomRotate.isActive();
map.touchZoomRotate.disableRotation();
map.touchZoomRotate.enable();
map.touchZoomRotate.enableRotation();

touchPitch

TouchPitchHandler, 使用触摸手势俯仰地图

new TouchPitchHandler(map: Map)
### Mapbox GL JS 入门教程 Mapbox GL JS 是一个用于创建交互式矢量地图的强大工具库。以下是关于如何快速入门并掌握其基本功能的内容。 #### 安装与引入 为了使用 Mapbox GL JS,需要先将其集成到项目中。可以通过 CDN 或 npm 的方式安装: ```html <script src='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js'></script> <link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' /> ``` 或者通过 npm 进行本地管理: ```bash npm install mapbox-gl ``` 随后,在 JavaScript 文件中导入模块: ```javascript import * as mapboxgl from 'mapbox-gl'; ``` #### 初始化地图 初始化地图是最基础的操作之一。下面是一个简单的例子展示如何加载默认的地图样式以及设置中心位置和缩放级别[^1]。 ```javascript // 替换为您的个人访问令牌 mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN'; const map = new mapboxgl.Map({ container: 'map', // HTML容器ID style: 'mapbox://styles/mapbox/streets-v12', // 地图样式 center: [-74.5, 40], // 初始视图坐标 [经度, 纬度] zoom: 9 // 缩放等级 }); ``` #### 添加标记 可以向地图添加自定义标记以便突出显示特定地点。这里提供了一个简单的方法来实现这一目标[^2]: ```javascript new mapboxgl.Marker() .setLngLat([-74.5, 40]) // 设置经纬度 .addTo(map); // 将标记添加至地图实例 ``` #### 处理事件 监听用户的互动行为(比如点击),能够增强用户体验。例如响应鼠标单击事件可按如下方式进行配置: ```javascript map.on('click', function(e) { console.log(e.lngLat); }); ``` #### 自定义样式层 除了预设好的模板外,还可以根据需求定制专属视觉效果。这通常涉及新增数据源及关联规则[^3]: ```javascript map.addSource('my-data-source-id', { type: 'geojson', data: {...} }); map.addLayer({ id: 'custom-layer', source: 'my-data-source-id', type: 'circle' }); ``` 以上就是有关于 **Mapbox GL JS Getting Started Tutorial** 的一些核心知识点介绍。希望这些资料能帮助您顺利开启学习之旅!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值