Vue2或Vue3项目引用百度地图

浏览器搜索百度地图开放平台控制台 ,登录百度账号,申请百度地图AK,创建应用即可。

方法一:静态加载百度地图API

第1步:在index.html里引入如下代码:

html 复制代码
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/logo.svg">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>NB System</title>
    <!-- 引入百度API  -->
    <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=3.0&ak=密钥AK"></script>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

第二步:在组件里使用百度地图的API了

bash 复制代码
<template>
  <div class="map-container">
    <div id="map" style="width: 100%; height: 400px;"></div>
  </div>
</template>

<script setup lang="ts">
  import { ref, onMounted } from 'vue';

  defineOptions({
    name: 'MapLocation', // 组件名称
  });

  // 补充 TS 类型声明(解决 BMapGL 未定义的报错)
  declare global {
    interface Window {
      BMapGL: any; // 百度地图核心对象
    }
  }

  // 地图实例
  let map: any = null;

  // 初始化地图(可选,仅渲染地图用)
  const initMap = () => {
    // 创建地图实例(中心点默认设为北京)
    map = new window.BMapGL.Map('map');
    map.centerAndZoom(new window.BMapGL.Point(116.404, 39.915), 12);
    map.enableScrollWheelZoom(true); // 开启滚轮缩放
  };
  
  // 组件挂载时初始化地图
  onMounted(() => {
    // 确保百度地图 API 加载完成
    if (window.BMapGL) {
      initMap();
    } else {
      alert('百度地图 API 加载失败,请检查 AK 是否正确');
    }
  });
</script>

<style scoped>
.map-container {
  padding: 20px;
}
</style>

方法二:动态加载百度地图API

第1步:在你的项目js资源文件夹下新建startBMapFun.js文件,内容如下:

javascript 复制代码
    /**
     * 加载百度地图api
     * @param {String} ak  百度地图的AK,必传
     */
    export default function startBMapFun(ak) {
      return new Promise(function(resolve, reject) {
        if (typeof window.BMap !== 'undefined') {
          resolve(window.BMap)
          return true
        }
        window.onBMapCallback = function() {
          resolve(window.BMap)
        }
        let script = document.createElement('script')
        script.type = 'text/javascript'
        script.src =
          'http://api.map.baidu.com/api?v=3.0&ak=' + ak + '&callback=onBMapCallback'
        script.onerror = reject
        document.head.appendChild(script)
      })
    }

第2步:在组件中引入startBMapFun函数:

javascript 复制代码
    import startBMapFun from '@/<资源文件夹>/startBMapFun.js'

第3步:在mounted中调用 startBMapFun(),就可以在组件中使用百度地图的API了,可以开始开发了:

javascript 复制代码
    //这里运用async/await 进行异步处理,保证BMap加载进来后才执行后面的操作
    async mounted() {
      await startBMapFun('密钥')
      ...
    }
相关推荐
threerocks6 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
ly76897 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
学习星球8 小时前
Qwik 框架入门实战:从开源项目 Qwik City 开始,用可恢复性替代水合
后端·前端框架·开源·c5全栈
剑胆琴心静水深流8 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
沙盘客9 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享
默_笙11 小时前
👍 我的代码被 ESLint 抓包了:单引号、var、没分号——全被当场点名
前端·javascript
oh,huoyuyan11 小时前
JS 动态网页抓不到?试试火车采集器网页抓取工具
开发语言·javascript·ecmascript
汉堡大王952712 小时前
用 Trae Work 自动化任务,6 分钟生成一份前端生态周报
前端·javascript·人工智能
章鱼小丸子逃跑中13 小时前
【2025最新版】如何将fnm与node.js安装在D盘?【保姆级安装及人性话理解教程】
前端·javascript·npm·node.js
CAD老兵15 小时前
在浏览器里对比 DWG/DXF 图纸 —— @mlightcad/cad-diff-viewer
前端·javascript·github