在vue中引用百度地图

本文介绍了如何在Vue.js项目中引用并使用百度地图。首先需要在百度地图API官网获取密钥(ak),然后通过在项目根目录下载地图插件,创建map.js文件进行配置。接着在相关组件的template、script和style部分分别设置地图展示和样式,以去除默认的版权信息和Logo。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue中引入百度地图

前期准备:在百度地址开放平台注册一个自己的百度地图的密钥(ak),申请地址: http://lbsyun.baidu.com/apiconsole

实现步骤:

1.项目根目录下下载百度地图插件

npm install vue-baidu-map –save

2.创建一个map.js(位于根目录下)

export function MP(ak) {
  return new Promise(function(resolve, reject) {
    window.init = function() {
      resolve(BMap)
    }
    var script = document.createElement('script')
    script.type = 'text/javascript'
    script.src = `http://api.map.baidu.com/api?v=2.0&ak=${ak}&callback=init`
    script.onerror = reject
    document.head.appendChild(script)
  })
}

3.在显示地图的组件中 template 中:

 <div class="baidumap" id="allmap"></div>    //地图的容器

4.在显示地图的组件中 script 中:

<script>
import { MP } from "@/map.js";   //在此处引用map.js
export default {
  name: "pm-distribution",
  components: {
  },
  data() {
    return {
      ak: "在此处填写自己申请的百度地图的密钥ak"
    };
  },
  mounted() {
    this.$nextTick(function() {
      let that = this;
      MP(that.ak).then(BMap => {
        // 百度地图API功能
        that.baiduMap();
      });
    });
  },
  methods: {
    ...mapMutations(["changeStyle"]),
    baiduMap() {
      var map = new BMap.Map("allmap"); // 创建地图实例
      var point = new BMap.Point(经度坐标, 纬度坐标); // 创建点坐标
      map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
      map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

      map.addControl(new BMap.NavigationControl()); //平移缩放控件
      map.addControl(new BMap.ScaleControl());    //比例尺
      map.addControl(new BMap.OverviewMapControl()); //缩略地图
      map.addControl(new BMap.MapTypeControl()); //地图类型
      //map.setMapStyle({ style: 'midnight' }) //地图风格

      var marker = new window.BMap.Marker(point); // 创建标注
      map.addOverlay(marker); // 将标注添加到地图中

      //提示信息
      var infoWindow = new BMap.InfoWindow(
        "在此处填写提示信息"
      );
      // 鼠标移上标注点要发生的事
      marker.addEventListener("mouseover", function() {
        this.openInfoWindow(infoWindow);
      });

      // 鼠标移开标注点要发生的事
      marker.addEventListener("mouseout", function() {
        //this.closeInfoWindow(infoWindow)
      });
    }
  }
};
</script>

5.在显示地图的组件中 style 中改变一下默认样式:

.baidumap {
    width: 1000px;
    height: 500px;
    border: 1px solid red;
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    margin: auto;
}

/* 去除百度地图版权那行字 和 百度logo */

.baidumap > .BMap_cpyCtrl {
    display: none !important;
}
.baidumap > .anchorBL {
    display: none !important;
}
<think>好的,用户的问题是在Vue2项目中如何集成百度地图API。我需要根据提供的引用内容来整理步骤,并确保回答符合用户的要求。 首先,看用户提供的引用,里面有Vue2和Vue3的例子。用户现在用的是Vue2,所以需要调整引用中的信息。例如,引用[3]提到使用vue-baidu-map插件,而引用[2]展示了Vue.use(BaiduMap)的初始化方法,这可能适用于Vue2。引用[4]是Vue3的setup语法,但用户需要Vue2,所以可能需要使用选项式API。 接下来,整理步骤。首先应该是安装依赖,根据引用[3],使用npm或cnpm安装vue-baidu-map。然后,在main.js中引入并初始化,如引用[2]所示,设置ak参数。接着,在组件中使用百度地图组件,可能需要参考引用[4]中的模板结构,但调整成Vue2的写法,比如使用mounted钩子而不是onMounted,以及不使用ref的响应式语法。 另外,引用[1]提到在index.html中去除原来的API引入,改为异步加载,这可能适用于避免警告。但根据引用[2]和[3],使用vue-baidu-map插件可能已经处理了API的加载,所以可能不需要手动引入脚本,而是通过插件处理。需要注意这一点,确保步骤正确。 还需要考虑密钥的获取,用户需要去百度地图开放平台申请ak。然后在初始化时填入,这一点在引用[2]和[3]都有提到。 最后,添加示例代码,确保代码是Vue2的语法,比如使用Vue.component,选项式API,在mounted生命周期中初始化地图。同时,样式部分要保持正确的高度,否则地图可能不显示。 在相关问题部分,需要生成与Vue2集成百度地图相关的常见问题,比如如何自定义覆盖物、解决加载问题、适配移动端以及密钥错误处理等。 检查所有步骤是否连贯,没有遗漏,比如注册组件、使用BaiduMap标签,以及初始化时的中心点设置。确保没有Vue3特有的语法,如setup或ref.value,替换成Vue2的this.$refs.map。 可能还需要提醒用户关于异步加载的问题,或者插件版本兼容Vue2的情况,确保vue-baidu-map的版本支持Vue2,必要时查看插件的文档。</think>### 在 Vue 2 中引入和使用百度地图 API 的步骤 #### 1. **注册百度地图开发者账号并获取密钥** - 访问[百度地图开放平台](https://lbsyun.baidu.com/),注册账号后创建应用,获取 `ak`(API密钥)[^3]。 #### 2. **安装依赖** 使用 `vue-baidu-map` 插件简化集成: ```bash npm install vue-baidu-map --save ``` #### 3. **全局配置百度地图** 在 Vue 2 的入口文件 `main.js` 中初始化: ```javascript import Vue from 'vue' import BaiduMap from 'vue-baidu-map' Vue.use(BaiduMap, { ak: 'YOUR_APP_KEY' // 替换为你的ak }) ``` [^2] #### 4. **在组件中使用地图** ```vue <template> <div class="map-container"> <baidu-map class="map" :center="{ lng: 116.404, lat: 39.915 }" :zoom="15" @ready="initMap" > <!-- 可添加地图控件或覆盖物 --> </baidu-map> </div> </template> <script> export default { methods: { initMap({ BMap, map }) { // 添加地图控件示例 map.addControl(new BMap.NavigationControl()) } } } </script> <style scoped> .map { height: 400px; /* 必须设置高度 */ } </style> ``` [^4] #### 5. **注意事项** - **移除旧版 API 引入**:确保不在 `index.html` 中重复引入百度地图脚本[^1]。 - **密钥权限**:检查百度地图控制台,确认 `ak` 启用了“浏览器端”权限。 - **容器高度**:地图容器必须明确设置高度,否则无法渲染。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值