Nuxt 4

View source
在 Nuxt 4 中注册 @movk/mapbox 模块,配置 token,组件与 composables 自动导入。

注册模块

nuxt.config.ts 中注册模块并配置 token:

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@movk/mapbox'],
  mapbox: {
    accessToken: process.env.NUXT_MAPBOX_TOKEN,
    tiandituToken: process.env.NUXT_TIANDITU_TOKEN
  }
})
token 写入 runtimeConfig.public.mapbox,组件在客户端创建地图时读取。建议用环境变量注入,不要硬编码。

配套 .env

.env
NUXT_MAPBOX_TOKEN=pk.your_mapbox_access_token
NUXT_TIANDITU_TOKEN=your_tianditu_tk

模块选项

选项说明
accessTokenMapbox access token
tiandituToken天地图服务 tk(使用 MapboxTiandituLayer 时需要)
prefix组件前缀,默认 Mapbox

开始使用

组件与 composables 自动导入,开箱即用。地图实例只在客户端 onMounted 创建,组件已做 SSR 安全处理,无需 <ClientOnly> 包裹

app.vue
<script setup lang="ts">
const center = ref<[number, number]>([116.397, 39.908])
const zoom = ref(9)
</script>

<template>
  <MapboxMap
    v-model:center="center"
    v-model:zoom="zoom"
    :options="{ style: 'mapbox://styles/mapbox/streets-v12' }"
  >
    <MapboxLayer
      layer-id="points"
      type="circle"
      :source="{ type: 'geojson', data: '/points.geojson' }"
      :paint="{ 'circle-radius': 8, 'circle-color': '#e11d48' }"
    />
    <MapboxNavigationControl position="top-right" />
  </MapboxMap>
</template>
MapboxMap 容器为 width:100%; height:100%,请确保父级有明确高度,否则地图不可见。
Copyright © 2026 - 2026 YiXuan - MIT License