vue使用百度地图(标点、点击后展示弹框、多个标点、点聚合)

  1. 安装百度地图

npm install vue-baidu-map --save
  1. 在百度地图开放平台申请AK

  1. 全局注册,在项目的main.js中引入

import Vue from "vue";
import baiduMap from "vue-baidu-map";

Vue.use(baiduMap, { ak: 在百度地图开放平台申请AK });

4.在public文件里的index.html中引入百度地图的点聚合工具开源库的文件

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=在百度地图开放平台申请AK "></script>
  <script type="text/javascript" src="//api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js">
  </script>
  <script type="text/javascript" src="//api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js">
  </script>
  1. 效果全部代码

<template>
  <div id="test">
    <baidu-map class="bm-view" id="allmap" @ready="init"></baidu-map>
  </div>
</template>

<script>
export default {
  name: "Home",
  components: {},
  data() {
    return {};
  },
  methods: {
    init() {
      var map = new BMap.Map("allmap"); // 创建地图实例

      var point = new BMap.Point(108.953723, 34.276202); //设置城市经纬度坐标
      map.centerAndZoom(point, 5); //
      map.setCurrentCity("西安"); // 设置地图显示的城市 此项是必须设置的
      map.enableScrollWheelZoom(true); //鼠标滚动缩放
      var setstyle = [
        {
          featureType: "water",
          elementType: "geometry.fill",
          stylers: {
            weight: "1",
            lightness: 1,
            saturation: 100,
            visibility: "on",
          },
          markersArr:[]
        },
      ];
      map.setMapStyle({
        styleJson: setstyle,
      });

      var data_info = [
        [
          110.229321,
          25.227083,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          104.979273,
          25.096498,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",

        ],
        [
          112.60061,
          37.74101,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",

        ],
        [
          109.944203,
          40.764037,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          126.448706,
          45.959158,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          96.448706,
          30.959158,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          100.448706,
          30.959158,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          100.548706,
          30.959158,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
        [
          100.648706,
          30.959158,
          "地址:广州省深圳市龙岗区<h4>标题格式啥的</h4>",
        ],
      ];
      var opts = {
        min_width: 250, // 信息窗口zuixiao宽度
        min_height: 80, // 信息窗口高度
        title: "详细信息", // 信息窗口标题
        enableMessage: true, //设置允许信息窗发送短息
      };
      var markersArr = [];
      for (var i = 0; i < data_info.length; i++) {
        var marker = new BMap.Marker(
          new BMap.Point(data_info[i][0], data_info[i][1])
        ); // 创建标注
        var content = data_info[i][2];
        map.addOverlay(marker); // 将标注添加到地图中
        addClickHandler(content, marker);
        markersArr.push(marker);
      }
      function addClickHandler(content, marker) {
        marker.addEventListener("click", function (e) {
          openInfo(content, e);
        });
      }
      function openInfo(content, e) {
        var p = e.target;
        var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
        var infoWindow = new BMap.InfoWindow(content, opts); // 创建信息窗口对象
        map.openInfoWindow(infoWindow, point); //开启信息窗口
      }

      var markerClusterer = new BMapLib.MarkerClusterer(map, {
        markers: markersArr,
      });
    },
  },
  mounted() {
    // this.init();
  },
};
</script>
<style>
#test {
  height: 98vh;
  width: 100%;
  background-color: rgb(192, 228, 127);
}
.bm-view {
  width: 100%;
  height: 100%;
}
</style>
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中实现百度地图聚合,可以按照以下步骤进行操作: 1. 首先,在Vue项目中安装百度地图的JavaScript API。可以通过在`index.html`文件中添加以下代码来引入百度地图的API: ```html <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=YOUR_API_KEY"></script> ``` 确保替换`YOUR_API_KEY`为你自己的百度地图API密钥。 2. 在Vue组件中创建地图容器,并初始化地图。可以在`mounted`钩子函数中添加以下代码: ```javascript mounted() { const map = new BMap.Map("map-container"); // 创建地图实例 const point = new BMap.Point(经度, 纬度); // 设置地图中心坐标 map.centerAndZoom(point, 15); // 初始化地图,设置地图缩放级别 this.map = map; // 将地图实例保存到组件数据中 } ``` 确保替换`经度`和`纬度`为你希望地图显示的中心坐标。 3. 获取需要聚合的标记数据,并使用百度地图的`MarkerClusterer`类进行聚合。可以在`mounted`钩子函数中添加以下代码: ```javascript mounted() { // ... const markers = []; // 存储标记的数组 // 添加标记到地图和markers数组中 yourData.forEach((item) => { const point = new BMap.Point(item.lng, item.lat); const marker = new BMap.Marker(point); map.addOverlay(marker); markers.push(marker); }); // 创建聚合器并设置参数 const markerClusterer = new BMapLib.MarkerClusterer(map, { markers: markers, }); // ... } ``` 确保替换`yourData`为你的标记数据数组,每个标记的经度和纬度分别存储在`item.lng`和`item.lat`中。 4. 在Vue组件中添加地图容器的HTML代码。可以在组件模板中添加以下代码: ```html <template> <div id="map-container" style="width: 100%; height: 400px;"></div> </template> ``` 确保根据需要设置地图容器的宽度和高度。 通过以上步骤,你就可以在Vue项目中实现百度地图聚合效果了。记得在百度地图开放平台申请并获取到API密钥,并替换代码中的`YOUR_API_KEY`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值