VUE2.0 +百度地图javascript API示例

首先到百度地图官网以开发者身份申请一个百度地图ak密钥。
链接地址:https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/getkey

一、全局引入百度地图

在vue项目的index.html中来引入百度地图apiscript脚本:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=您的密钥"></script>
<template>
   <div ref={'map'} className={styles.map} />
</template>
 
<script>
  export default {
    name: 'MapPage',
    props: {},
    data() {
      return {
        map: null, // 地图容器
      }
    },
    mounted() {
        this.map = new BMap.Map(this.$refs.map); // 创建Map实例
        // 初始化地图,设置中心点坐标和地图级别
        this.map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
        // 开启鼠标滚轮缩放
        this.map.enableScrollWheelZoom(true); 
    },
    components: {},
    methods: {},
    watch: {}
  }
</script>
 
<style scoped lang="scss">
  .map{
      width:500px;
      height:500px;
  }
</style>

二、引入并使用组件化的百度地图(vue-baidu-map)

官方文档:https://dafrok.github.io/vue-baidu-map/#/zh/start/usage

全局注册

在main.js中引入

import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: 'YOUR_APP_KEY'
})

在组件中使用:

<template>
  <baidu-map class="bm-view">
  </baidu-map>
</template>

<style>
.bm-view {
  width: 100%;
  height: 300px;
}
</style>

局部注册

在组件中使用:

<template>
  <baidu-map class="bm-view" ak="YOUR_APP_KEY">
  </baidu-map>
</template>

<script>
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
export default {
  components: {
    BaiduMap
  }
}
</script>

<style>
.bm-view {
  width: 100%;
  height: 300px;
}
</style>

CDN 全局注册

<script>
Vue.use(VueBaiduMap.default, {
  ak: 'YOUR_APP_KEY'
})
</script>

实例化map和百度地图构造函数

可以通过调用该方法将实例化的map和百度地图构造函数BMap导出,然后再操作实例化的map来实现给地图打点等操作。

<template>
    <BMap
        ak="你的百度ak密钥"
        class="map"
        :center="center"
        :zoom="zoom"
        :scroll-wheel-zoom="true"
        @ready="bMapLoad"
    >
    </BMap>
</template>
 
<script>
  import BMap from 'vue-baidu-map/components/map/Map'
 
  let mapConstructor; // 百度地图构造函数存放容器
 
  export default {
    name: 'map',
    props: {},
    data() {
      return {
        mapPoint,
        center: {
          lng: 116.404,
          lat: 39.915
        },
        zoom: 15,
        map: null, // 地图容器
        BMap: null, // 构造器容器
      }
    },
    components: {
      BMap
    },
    methods: {
      // BMap加载触发实例化方法
      bMapLoad({BMap, map}) {
        // 百度地图容器全局化
        this.map = map;
        // 百度地图构造函数全局化
        mapConstructor = BMap;
        this.BMap = BMap;
        this.bMapPoint();
      },
 
      // 在百度地图上打点方法
      bMapPoint() {
        // 清除地图上的覆盖物
        this.map.clearOverlays();
        const mPoint = new mapConstructor.Point(this.center.lng, this.center.lat);
        var marker = new mapConstructor.Marker(mPoint);
        this.map.addOverlay(marker);
      }
    },
  }
</script>
 
<style scoped lang="scss">
    .map {
      width: 100%;
      height: 45vh;
    }
</style>

编写百度地图组件

在父组件中引入自定义百度地图组件

<template>
  <div class='baiduMapPageCon'>
    <BaiduMapPage ref="baiduMapPage" :markerArr="markerArr"></BaiduMapPage>
  </div>
</template>
<script>
import BaiduMapPage from '@/components/BaiduMapPage/index.vue'
export default {
  name:'baiduMapPageCon',
  components: {BaiduMapPage},
  props:[],
  data() {
    return {
      markerArr:[
       	{ title: "苏州有限公司",lng:113.264531,lat:23.157003,point: "113.264531|23.157003",address: "工业园区",tel:"10086",contact: "陈先生", color: "red"},
        { title: "南京有限公司",lng:113.330934,lat:23.113401,point: "113.330934|23.113401",address: "相城区",tel:"12306",contact: "陈先生", color: "green"},
        { title: "上海有限公司",lng:113.310854,lat:23.113605,point: "113.310854|23.113605",address: "外滩",tel:"0521846555",contact: "陈先生", color: "gray"}
      ]
    };
  },
  computed: {},
  watch: {},
  created() {},
  mounted() {},
  methods: {}
};
</script>

百度地图组件代码:

<template>
  <div class=''>
    <div>
      <BMap
        ak="你的百度ak密钥"
        class="map"
        :center="center"
        :zoom="zoom"
        :scroll-wheel-zoom="true"
        @ready="bMapLoad"
      ></BMap>
    </div>
  </div>
</template>
<script>
import BMap from 'vue-baidu-map/components/map/Map'
let mapConstructor; // 百度地图构造函数存放容器
export default {
  name:'',
  components: {BMap},
  props:{
    markerArr: {
      type: Object,
      default: () => {}
    }
  },
  data() {
    return {
      center: {
        lng: 113.312213,
        lat: 23.147267
      },
      zoom: 13,
      map: null, // 地图容器
      BMap: null, // 构造器容器
    };
  },
  computed: {},
  watch: {},
  created() {},
  mounted() {},
  methods: {
    // BMap加载触发实例化方法
    bMapLoad({BMap, map}) {
      // 百度地图容器全局化
      this.map = map;
      // 百度地图构造函数全局化
      mapConstructor = BMap;
      this.BMap = BMap;
      this.initMap()
    },
    initMap(){
      this.addMapControl();//向地图添加控件
      this.bMapPoint();//向地图中添加marker
    },

    //向地图添加控件
    addMapControl(){
      //向地图中添加缩放控件
      var ctrl_nav = new mapConstructor.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
      this.map.addControl(ctrl_nav);
      //向地图中添加缩略图控件
      var ctrl_ove = new mapConstructor.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:true});
      this.map.addControl(ctrl_ove);
      //向地图中添加比例尺控件
      var ctrl_sca = new mapConstructor.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
      this.map.addControl(ctrl_sca);
    },
    // 在百度地图上打点方法
    bMapPoint() {
      // 清除地图上的覆盖物
      this.map.clearOverlays();
      this.markerArr.forEach((item)=>{
        const mPoint = new mapConstructor.Point(item.lng,item.lat);
        var marker = new mapConstructor.Marker(mPoint);
        // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //给标点处增加动态效果

        var label = new mapConstructor.Label(item.title,{offset: new mapConstructor.Size(20,-10)});
        // 设置 label 样式
        label.setStyle({
          padding: "3px 10px",
          backgroundColor: item.color,
          color: "#fff",
          borderColor: item.color,
        });
        marker.setLabel(label);

        var info = new mapConstructor.InfoWindow("<p style='font-size:12px;line-height:1.8em;'" + item.title + "</br>地址:" + item.address + "</br> 电话:" + item.tel + "</br> 联系人:" + item.contact+"</p>");//悬浮提示信息

        marker.addEventListener("mouseover",function(){
          this.openInfoWindow(info);//悬浮监听提示方法
        });

        this.map.addOverlay(marker);
      })
    },
  }
};
</script>
<style lang='scss' scoped>
.map {
  width: 100%;
  height: 45vh;
}
</style>
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 尚硅谷是国内知名的IT培训机构,他们提供了关于Vue2.0和3.0的全套教程。Vue是一种流行的JavaScript框架,用于构建用户界面。2.0版本是Vue的早期版本,而3.0版本是最新的更新版本。 2.0版本的教程主要介绍了Vue的基础知识和核心概念,包括组件、指令、过滤器等。学习者可以了解如何使用Vue来构建单页应用程序,处理数据绑定、事件处理和路由等功能。此外,教程还涉及Vue的工具和生态系统,如Vue Router和Vuex,它们可以扩展Vue的功能。 而3.0版本的教程则更加深入地介绍了Vue的新特性和改进。其中最重要的特性是使用了新的响应式系统,可以提高性能和开发效率。教程还包括Vue 3中的虚拟DOM、组合API、静态类型检查等内容。学习者通过这些教程可以了解如何迁移现有的Vue 2项目到Vue 3,并且可以利用新特性来构建更高效、可靠的Web应用程序。 尚硅谷的教程以系统性和实战性为核心,学习者不仅可以理论上了解Vue的各种概念和技术,还可以通过实际案例和项目实践来巩固所学知识。此外,教程提供了丰富的练习和实践任务,帮助学习者深入理解和应用所学内容。 总体而言,尚硅谷的Vue 2.0和3.0全套教程提供了全面的学习资源,使学习者能够系统地学习和掌握Vue的开发技能,从而在前端开发领域取得更大的成就。 ### 回答2: 尚硅谷是一家知名的IT教育机构,他们提供了一套完整的Vue2.0Vue3.0教程系列。 Vue是一种流行的JavaScript前端框架,它以其简洁易用和高效的特性而受到广泛的欢迎。尚硅谷的Vue教程从基础开始,逐步深入,涵盖了从Vue2.0Vue3.0的全套内容。 对于Vue初学者来说,尚硅谷的教程非常适合。他们从Vue的核心概念开始讲解,例如组件、指令、生命周期等,帮助学习者建立起对Vue的基础理论。然后他们会引导学习者通过实践项目来锻炼自己,这些项目包括购物车、社交媒体应用等。 在Vue2.0部分,尚硅谷详细介绍了Vue的基本语法、Vue组件、路由、状态管理等方面的内容。他们通过一步一步的演示和实践指导,帮助学习者掌握Vue的使用技巧和开发经验。 而在Vue3.0部分,尚硅谷更新了教程内容,包括了对Vue3.0新特性的解释和应用实例。他们介绍了Vue3.0相对于2.0的改进,例如Composition API和响应式系统的改进。通过学习Vue3.0,学习者可以更好地理解和应用最新的Vue技术。 总的来说,尚硅谷的Vue2.0Vue3.0全套教程是一套系统完备的学习材料,适合初学者和有一定经验的开发者。通过学习这些教程,学习者可以全面掌握Vue的核心知识和应用技巧,进一步提升自己在前端开发领域的能力。 ### 回答3: 尚硅谷提供了全套的Vue2.0Vue3.0教程,帮助学习者全面了解和掌握Vue的相关知识和技能。 Vue2.0教程涵盖了Vue基础知识、组件化开发、路由、状态管理、Vue-cli的使用等内容。学习者可以通过该教程了解Vue的基本概念、指令、组件以及如何构建单页应用等。在Vue2.0教程中,尚硅谷以清晰的讲解和示例代码,帮助学习者逐步掌握Vue的开发技巧和最佳实践。 而Vue3.0教程则介绍了Vue3.0的全新特性与改进,如响应式、组合式API、Teleport等。学习者可以通过该教程了解Vue3.0相较于Vue2.0的重大改变和优势,以及如何从Vue2.0迁移到Vue3.0。此外,尚硅谷还会通过实际项目案例和实践演练,帮助学习者更好地理解和应用Vue3.0的新特性。 尚硅谷的教程内容通常包括视频教学、教学文档、示例代码和练习题等资源,学习者可以通过这些资源系统地学习Vue的相关知识。此外,尚硅谷还提供在线答疑和讨论交流的平台,学习者可以在学习过程中随时获得帮助与指导。 总之,尚硅谷的Vue2.0Vue3.0全套教程是一门系统且综合的学习课程,通过学习这些教程,学员可以全面了解和掌握Vue的开发技术,并能够应用到实际项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值