vue2使用百度地图api(根据多组经纬度进行标记地点)

1.百度地图api官网注册账号获取ak秘钥

网址:jspopularGL | 百度地图API SDK

2.在自己的项目中引入百度地图

(1)安装

npm install vue-baidu-map --save


(2)在main.js中引入

// 百度地图

import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {

  ak: '', //这个地方是官方提供的ak密钥

})

3.在vue项目中使用(完整代码)

<template>
  <div class="MapTest">
    <BMap
      ak=""
      :center="center"
      class="map"
      :scroll-wheel-zoom="true"
      :zoom="zoom"
      @ready="bMapLoad"
    />
  </div>
</template>

<script>
  import BMap from 'vue-baidu-map/components/map/Map'

  let mapConstructor // 百度地图构造函数存放容器

  export default {
    name: 'MapTest',
    components: {
      BMap,
    },
    data() {
      return {
        // mapPoint,
        center: {
          lng: 116.404,
          lat: 39.915,
        },
        pointsList: [
          {
            longitude: '116.46',
            latitude: '39.92',
            address: '北京',
          },
          {
            longitude: '116.2',
            latitude: '40.22',
            address: '昌平',
          },
          {
            longitude: '117.2',
            latitude: '39.13',
            address: '天津',
          },
          {
            longitude: '121.48',
            latitude: '31.22	',
            address: '上海',
          },
          {
            longitude: '106.54',
            latitude: '29.59',
            address: '重庆',
          },
          {
            longitude: '104.04',
            latitude: '30.40',
            address: '成都',
          },
          {
            longitude: '117.00',
            latitude: '36.40',
            address: '济南',
          },
          {
            longitude: '120.00',
            latitude: '36',
            address: '青岛',
          },
        ],
        zoom: 6,
        map: null, // 地图容器
        BMap: null, // 构造器容器
      }
    },
    mounted() {
      // this.initMap()
    },
    methods: {
      // initMap() {
      //   // 创建地图实例
      //   const map = new BMap.Map('map')
      //   const point = new BMap.Point(116.404, 39.915) // 创建点坐标
      //   map.centerAndZoom(point, 15) // 初始化地图,设置中心点坐标和地图级别

      //   // 创建文字标注
      //   const label = new BMap.Label('这里是文字说明', {
      //     offset: new BMap.Size(20, -10),
      //   })
      //   // 自定义文字样式
      //   label.setStyle({
      //     color: 'red',
      //     fontSize: '12px',
      //     height: '20px',
      //     lineHeight: '20px',
      //     fontFamily: '微软雅黑',
      //   })
      //   // 将标注添加到地图中
      //   map.addOverlay(label)
      //   // 将标注的位置设置为地图中心点
      //   label.setPosition(point)
      // },

      // BMap加载触发实例化方法
      bMapLoad({ BMap, map }) {
        // 百度地图容器全局化
        this.map = map
        // 百度地图构造函数全局化
        mapConstructor = BMap
        this.BMap = BMap
        this.bMapPoint()
      },

      // 在百度地图上打点方法
      bMapPoint() {
        // 清除地图上的覆盖物
        this.map.clearOverlays()
        //  对多个经纬度点进行标注
        this.pointsList.forEach((element) => {
          const mPoint = new mapConstructor.Point(
            element.longitude * 1,
            element.latitude * 1
          )
          var myIcon = new mapConstructor.Icon( // 自定义图标
            require('@/icon/car.png'),
            new mapConstructor.Size(64, 64) // 图标的宽度和高度
          )
          var marker = new mapConstructor.Marker(mPoint, {
            icon: myIcon,//注意icon i小写,负责图标无法显示
          })
          this.map.addOverlay(marker)
          // 创建文字标注
          const label = new mapConstructor.Label(
            element.address,
            // `(${element.longitude * 1},${element.latitude * 1})`,
            {
              position: {
                lng: element.longitude * 1,
                lat: element.latitude * 1,
              }, // 文本绑定的点位位置
              offset: new mapConstructor.Size(2, -16), // 文本位置移动
            }
          )
          // 自定义文字样式
          label.setStyle({
            color: 'black',
            fontSize: '12px',
            height: '20px',
            lineHeight: '20px',
            border: '1px solid #000',
          })
          // 将标注添加到地图中
          this.map.addOverlay(label)
        })
        // 对单个经纬度点进行标注
        // const mPoint = new mapConstructor.Point(
        //   this.center.lng,
        //   this.center.lat
        // )
        // 创建文字标注
        // const label = new mapConstructor.Label(
        //   `(${this.center.lng},${this.center.lat})`,
        //   {
        //     position: this.center, // 文本绑定的点位位置
        //     offset: new mapConstructor.Size(-5, -20), // 文本位置移动
        //   }
        // )
        // // 自定义文字样式
        // label.setStyle({
        //   color: 'black',
        //   fontSize: '12px',
        //   height: '20px',
        //   lineHeight: '20px',
        //   border: '1px solid #000',
        // })
        // 将标注添加到地图中
        // this.map.addOverlay(label)
        // 自定义图标
        // eslint-disable-next-line no-unused-vars
        // var myIcon = new mapConstructor.Icon(
        //   require('./car_top.png'),
        //   new mapConstructor.Size(64, 64)
        // )
        // var marker = new mapConstructor.Marker(mPoint, {
        //   Icon: myIcon,
        // })
        // this.map.addOverlay(marker)
      },
    },
  }
</script>

<style scoped lang="scss">
  .MapTest {
    padding: 20px;
  }
  .map {
    width: 100%;
    height: calc(100vh - 240px);
  }
  // 去掉百度地图左下角的logo
  :deep() {
    .BMap_cpyCtrl {
      display: none;
    }
    .anchorBL {
      display: none;
    }
  }
</style>

4.效果截图

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现在Vue使用高德地图,并根据经纬度标记地理位置,可以按照以下步骤进行操作。 首先,需要在项目中引入高德地图的JavaScript SDK。可以通过在index.html文件中引入以下代码: ```html <script src="//webapi.amap.com/maps?v=1.4.15&key=your-amap-key"></script> ``` 其中,替换"your-amap-key"为你自己的高德地图API密钥。 接下来,在Vue组件中创建一个地图容器,可以使用div元素来承载地图。在组件的`mounted`生命周期钩子中,初始化地图并设置中心和缩放级别: ```javascript mounted() { var map = new AMap.Map('map-container', { center: [经度, 纬度], zoom: 缩放级别 }); } ``` 其中,将`经度`和`纬度`替换为具体的地理位置经纬度坐标,并根据需要设置合适的`缩放级别`。 要在地图上标记一个地点,可以使用`AMap.Marker`对象。通过创建一个新的`AMap.Marker`实例,并设置其位置和图标,即可在地图上显示标记: ```javascript var marker = new AMap.Marker({ position: [经度, 纬度], icon: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png' // 自定义标记图标 }); marker.setMap(map); // 将标记添加到地图上 ``` 同样,将`经度`和`纬度`替换为具体的地理位置经纬度坐标。如果需要自定义标记的图标,可以通过设置`icon`属性,将图标的URL传递给它。 最后,在模板中添加一个专门承载地图的div元素: ```html <div id="map-container"></div> ``` 这样,就可以在Vue中实现高德地图的使用,并根据经纬度在地图上标记地理位置了。记得替换相关的经纬度和高德地图API密钥,以适应你的实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值