安装
本指南详细介绍 MapboxGL 的安装和配置方法。
环境要求
- Node.js 16.0 或更高版本
- 现代浏览器(Chrome、Firefox、Safari、Edge)
安装方式
方式一:使用包管理器
npm
bash
npm install mapbox-glyarn
bash
yarn add mapbox-glpnpm
bash
pnpm add mapbox-gl方式二:使用 CDN
html
<!-- Mapbox GL JS -->
<script src="https://cdn.jsdelivr.net/npm/mapbox-gl@3.7.0/dist/mapbox-gl.min.js"></script>
<!-- Mapbox GL CSS -->
<link href="https://cdn.jsdelivr.net/npm/mapbox-gl@3.7.0/dist/mapbox-gl.min.css" rel="stylesheet">在项目中使用
Vite 项目
javascript
// main.js 或 main.ts
import mapboxgl from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'
// 设置访问令牌
mapboxgl.accessToken = import.meta.env.VITE_MAPBOX_TOKEN
export { mapboxgl }javascript
// .env
VITE_MAPBOX_TOKEN=your_access_token_hereVue 3 项目
vue
<template>
<div id="map" ref="mapContainer"></div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import mapboxgl from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'
const mapContainer = ref(null)
onMounted(() => {
const map = new mapboxgl.Map({
container: mapContainer.value,
style: 'mapbox://styles/mapbox/streets-v12',
center: [116.3974, 39.9093],
zoom: 11
})
})
</script>
<style scoped>
#map {
width: 100%;
height: 100vh;
}
</style>React 项目
jsx
import { useEffect, useRef } from 'react'
import mapboxgl from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'
mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN'
function Map() {
const mapContainer = useRef(null)
const map = useRef(null)
useEffect(() => {
if (map.current) return
map.current = new mapboxgl.Map({
container: mapContainer.current,
style: 'mapbox://styles/mapbox/streets-v12',
center: [116.3974, 39.9093],
zoom: 11
})
return () => {
map.current.remove()
}
}, [])
return <div ref={mapContainer} style={{ width: '100%', height: '100vh' }} />
}
export default Map开发工具
TypeScript 类型定义
bash
npm install @types/mapbox-gl --save-devVue 开发工具
如果你使用 Vue,推荐安装官方的 MapboxGL Vue 组件:
bash
npm install @studiometa/vue-mapbox-gl
# 或
npm install v-mapbox性能优化建议
性能优化
- 使用最新版本的 MapboxGL
- 合理设置
preserveDrawingBuffer选项 - 对于大量数据,考虑使用数据聚类
- 使用 WebGL 2.0 以获得更好的性能
故障排除
问题:地图不显示
解决方案:
- 检查访问令牌是否有效
- 确认容器元素有明确的高度和宽度
- 检查浏览器控制台是否有错误信息
问题:样式加载失败
解决方案:
- 确保正确引入 CSS 文件
- 检查样式 URL 是否正确
- 验证网络连接
问题:TypeScript 类型错误
解决方案:
bash
npm install @types/mapbox-gl --save-dev或在 tsconfig.json 中添加:
json
{
"compilerOptions": {
"types": ["mapbox-gl"]
}
}