vue使用高德地图实现多种点样式海量点渲染及信息显示

1.创建地图

定义所需变量

	data() {
	    return {
	      map: null,
	      styleObjectArr: [],
	      massMarks: null,
	      marker: {},
	      mapData: [],
	    }
  },

创建地图,在mounted中调用创建地图函数

	init() {
      this.map = new AMap.Map("map-box", { //map-box为地图容器
        center: [120.27643, 30.1527],
        resizeEnable: true,
        zoom: 12,
        mapStyle: "amap://styles/darkblue",
      })
    },

2.获取地图坐标信息

async getMapData() {
      let _this = this
      let { data: res } = await _this.$axios.get(
        "/api/...."//获取轨迹坐标信息接口地址
      )
      if (res.code == 1) {
        _this.mapData = res.data
		/*数据结构,可以让后台封装或者直接封装
		data = [{
			lnglat: [116.405285, 39.904989],
			name: '要显示的信息',
			id:1,
			style: 0  // 该数据的样式取值styleObjectArr数组对应的样式索引
		},{
			lnglat: [116.405285, 39.904989],
			name: '要显示的信息',
			id:2,
			style: 1
		} ];*/
        _this.getMassMarks()//创建海量点marker
      } else {
        _this.$message.warning(res.msg)
      }
    },

3.创建海量点标记信息

getMassMarks() {
      let _this = this
      //创建多种类点样式数组
      _this.styleObjectArr = [
        {
          url: require("@/assets/images/base-station.png"), // 本地图标地址引入
          //url: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png',  // 线上图标地址引入方式
          size: new AMap.Size(20, 30), // 图标大小
          anchor: new AMap.Pixel(5, 5), // 图标显示位置偏移量,基准点为图标左上角
          zIndex: 1,//设置层级,值大的显示在上层
        },
        {
          url: require("@/assets/images/4S-shop.png"), // 图标地址
          size: new AMap.Size(20, 30), // 图标大小
          anchor: new AMap.Pixel(5, 5), // 图标显示位置偏移量,基准点为图标左上角
          zIndex: 2,
        },
      ]
      _this.massMarks = new AMap.MassMarks(_this.mapData, {
        zIndex: 100, // 相对于地图海量点图层叠加的顺序
        zooms: [3, 19], // 在指定地图缩放级别范围内展示海量点图层
        cursor: "pointer",
        style: _this.styleObjectArr, //多种样式对象的数组
      })
      _this.marker = new AMap.Marker({ content: " ", map: _this.map })//创建marker
      //鼠标移上显示信息窗体
      AMap.event.addListener(_this.massMarks, "mouseover", function(e) {
        _this.marker.setPosition(e.data.lnglat)
        _this.marker.setLabel({ content: e.data.name })//设置信息窗体内容
      })
      //鼠标移开隐藏信息窗体
      AMap.event.addListener(_this.massMarks, "mouseout", function(e) {
        _this.marker.setPosition(e.data.lnglat)
        _this.marker.setLabel({ content: "" })//信息窗体内容清空
      })
      // 将 massMarks 添加到地图实例
      _this.massMarks.setMap(_this.map)
    },

大部分代码就是这些了,我也是对照高德官方API边学边做的,还是比较简单的,有什么问题欢迎讨论

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 引入高德地图API 在vue3项目中,可以通过在index.html中引入高德地图API的方式来使用高德地图。在head标签中添加以下代码: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=你的高德地图key"></script> ``` 其中,key为你在高德开放平台申请的地图应用的key。 2. 在组件中添加地图容器 在组件模板中添加一个div作为地图容器: ```html <template> <div id="map"></div> </template> ``` 3. 初始化地图 在组件中添加一个mounted生命周期钩子,在其中初始化地图: ```javascript mounted() { const map = new AMap.Map("map", { zoom: 13, //地图级别 center: [116.397428, 39.90923], //中心坐标 }); } ``` 其中,zoom为地图级别,center为地图中心的经纬度坐标。 4. 添加标记 在地图上添加标记,可以通过AMap.Marker类来实现。在mounted生命周期钩子中添加以下代码: ```javascript const marker = new AMap.Marker({ position: [116.397428, 39.90923], //标记位置 title: "这是一个标记", //鼠标悬停时的提示信息 }); marker.setMap(map); //将标记添加到地图中 ``` 其中,position为标记的经纬度坐标,title为鼠标悬停时显示的提示信息。 完整代码如下: ```html <template> <div id="map"></div> </template> <script> export default { mounted() { const map = new AMap.Map("map", { zoom: 13, center: [116.397428, 39.90923], }); const marker = new AMap.Marker({ position: [116.397428, 39.90923], title: "这是一个标记", }); marker.setMap(map); }, }; </script> ``` 运行项目后即可在地图上看到一个标记。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值