【高德地图】点的分组聚合

有的时候我们需要在地图上渲染大量的点,为了让视觉上的效果更美观,我们需要用到点聚合,也就是地图随着缩放层级的不同,某区域的点聚合到一起,并且显示该区域点的统计数量,如下图

// 渲染点
function pointRender(context) {
   let isActive = false;
   let extData = null;
   let type = 0;
   if (context.data) {
     type = context.data[0].info.type;
     extData = context.data[0].info;
     isActive = mapStore.currentId === context.data[0].info.id;
   }
   const countNum = context.count > 1 ? context.count : '';
   setMarkerStyle(type, countNum, isActive, context.marker, extData);// 设置点样式
}

// 创建点聚合
this.markerCluster = new AMap.MarkerCluster(this.amap, pointList, {
   renderClusterMarker: pointRender,
   renderMarker: pointRender,
});

 但是有时我们希望可以看到不同类型点,聚合后分别的统计数据,参考网上的很多方法,基本都是在渲染点的时候监听pointRender方法返回的marker,根据marker的不同类型再做聚合效果,这样就会特别麻烦。其实我们可以先将点分好类,重写点渲染的方法,再创建多个点聚合实例去解决这个问题,方便又高效。

// 渲染点
function pointRender(context, type?: number) {
   let isActive = false;
   let extData = null;
   if (context.data) {
     type = context.data[0].info.type;
     extData = context.data[0].info;
     isActive = mapStore.currentId === context.data[0].info.id;
   }
   const countNum = context.count > 1 ? context.count : '';
   setMarkerStyle(type, countNum, isActive, context.marker, extData);// 设置点样式
}

// 创建点聚合1
this.markerCluster1 = new AMap.MarkerCluster(this.amap, pointList1, {
   renderClusterMarker: (context) => pointRender(context, pointType.type1),
   renderMarker: pointRender,
});
// 创建点聚合2
this.markerCluster2 = new AMap.MarkerCluster(this.amap, pointList2, {
   renderClusterMarker: (context) => pointRender(context, pointType.type2),
   renderMarker: pointRender,
});
....

至此便解决点的分组聚合问题^-^ 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp是一款跨平台的移动应用开发框架,而高德地图是一款广泛使用的地图服务平台。在uniapp中内置了高德地图,使得开发者可以方便地在应用中使用地图功能。 聚合高德地图提供的一种功能,它可以将地图上的大量标注聚合起来,以提升地图的可视化效果和交互体验。在开发应用时,我们可以通过uniapp内置的高德地图组件,结合聚合功能,实现地图上大量标注的高效展示。 要使用聚合功能,我们首先需要在应用中引入高德地图组件,并设置地图的初始化参数,如地图的中心坐标、缩放级别等。然后,我们可以通过调用高德地图的Marker对象来添加各个标注,并设置每个标注的经纬度、图标等属性。 当我们需要使用聚合功能时,可以通过高德地图的Cluster对象来实现。我们可以将所有的标注传递给Cluster对象,并设置聚合的样式、击事件等。Cluster对象会根据一定的规则将附近的标注聚合在一起,形成一个聚合。当用户聚合时,可以通过击事件获取到该聚合下的所有标注,以便进一步操作或展示。 通过在uniapp中使用内置的高德地图组件和聚合功能,我们可以轻松实现地图的展示和标注聚合,为用户提供更好的地图浏览体验。利用这些功能,我们可以开发一些基于地图的应用,如地检索、附近的人等功能,丰富用户的使用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值