vue3+vite+mapbox构建项目地图初始化框架

一、创建vue3项目这一步直接略过,有不明白的可以翻我mapbox专栏里面的另一篇关于mapbox实现楼层分层单体化,里面说的十分详细。

二、安装mapboxgl库

pnpm install --save mapbox-gl

三、地图初始化

实际项目中这个肯定是作为单独一个路由页面组件的,但是这里为了便于展示成果,我就直接在app.vue中完成初始化。

具体代码如下

<template>
  <div
    ref="Map"
    id="Map"
  ></div>
</template>

<script setup>
// mapboxgl地图
import mapboxgl from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'
// mapboxgl汉化
// import MapboxLanguage from '@mapbox/mapbox-gl-language'

let map // 地图
import { onMounted, onBeforeUnmount, ref } from 'vue'
// 初始化生命周期
onMounted(() => {
  init()
})
onBeforeUnmount(() => {
  map = null
})

const Map = ref(null),
  start = {
    center: [80, 80],
    zoom: 2,
    pitch: 0,
    bearing: 0
  },
  end = {
    center: [114.124064, 30.463405],
    zoom: 16,
    bearing: 20, //目标方位角
    pitch: 70
  }
function init() {
  mapboxgl.accessToken = '你的token'
  map = new mapboxgl.Map({
    container: Map.value,
    style: {
      version: 8,
      sources: {
        'raster-tiles': {
          type: 'raster',
          tiles: ['http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'],
          tileSize: 256
        }
      },
      layers: [
        {
          id: 'simple-tiles',
          type: 'raster',
          source: 'raster-tiles',
          minzoom: 14,
          maxzoom: 20
        }
      ]
    },
    ...start,
    projection: 'globe', // 为 3D 地球
    antialias: false //抗锯齿,通过false关闭提升性能
  })
  // map.addControl(new MapboxLanguage({ defaultLanguage: 'zh-Hans' }))
  // ### 添加导航控制条
  map.addControl(new mapboxgl.NavigationControl(), 'top-left')
  map.on('style.load', function () {
    map.setFog({})
    map.flyTo({
      ...end,
      duration: 5000,
      essential: true
    })
  })
}
</script>

<style>
.mapboxgl-ctrl-bottom-left,
.mapboxgl-ctrl-bottom-right {
  display: none;
}
.mapboxgl-ctrl-icon {
  box-sizing: border-box;
}
#Map {
  width: 100%;
  height: 100vh;
}
</style>

最终效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值