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('密钥')
      ...
    }
相关推荐
Swift社区2 小时前
React 项目生产环境构建与静态资源优化
前端·react.js·前端框架
ZaneAI2 小时前
🚀 Vercel AI SDK 使用指南:Call Options 动态配置 Agent
typescript·agent
兆子龙3 小时前
深入 ahooks 3.0 useRequest 源码:插件化架构的精妙设计
javascript·面试
电商API_180079052473 小时前
淘宝商品详情数据获取全方案分享
开发语言·前端·javascript
前端不开发4 小时前
在任意网页里“召唤”一个火柴人:一次有趣的 JavaScript Hack
前端·javascript
UI设计兰亭妙微4 小时前
资金运营管理监控系统交互设计、UI设计及VUE开发
vue.js·ui·交互
王子肥波4 小时前
🚀 TabTab Admin:一款现代化的 Vue 3 后台管理系统模板
vue.js
白开水丶5 小时前
vue3源码学习(五)ref 、toRef、toRefs、proxyRefs 源码学习
前端·vue.js·学习
RaidenLiu5 小时前
拒绝重写!Flutter Add-to-App 全攻略:让原生应用“渐进式”拥抱跨平台
前端·flutter·前端框架