高德地图的点聚合效果下的点的添加和删除

  • 点聚合实现

最近做项目一直在和高德地图打交道。。。坑坑坑

打点一旦多,对于密集恐惧症的人来说就是一场灾难,所以官方给出了解决方案---点聚合。

在地图打点就这样轻松实现

marker = new AMap.Marker({
    map: map,
    position: position,
    icon: icon_style
});

markers作为存放所有点的集合,每创建一个marker,就把它装进markers中

var markers = [];
markers.push(marker);

最后调用一下这个工具就可以轻松实现图上效果

map.plugin(["AMap.MarkerClusterer"], function () {
    cluster = new AMap.MarkerClusterer(map, markers);
});

  • 点聚合状态下删除和添加点

这时候需求就来了,根据websocket收到的数据,动态修改点的样式,也就是说把原来的点删除,在一样的位置上重新点上一个点,顺带把icon的样式给换了,挺合理,那就做呗。看了下官方的事例,删除点有两种方法:

1. markers[0].setMap(null);
2. map.remove(markers[0]);

执行完毕,没有问题。点确实删除了,在点删除之后又把新的样式的点打上

坑:在移动滚轮切换地图缩放级别的时候,会发现原来的点和现在的点重合在一起,看到的效果就是一个点,随着你的鼠标滚轮的滚动,颜色在不停的变化,造成的原因就是两个点重合在了一起。

这下我就纳闷了,我还把重新打点的方法延迟了几秒钟执行,清清楚楚看到原来的点删除了,新的点上去。

立马跑到官方的点聚合的事例中:在控制台打 map.remove(markers);确实是删除了

但当我移动滚轮的时候就又出现了,官方的事例也会出现这种BUG?怀疑人生。

我想起高德地图有问题可以去提交工单,我就开始写一下工单,写到一半发现需要填写一下具体是哪个发生问题,上面提示可以参考官方的参考手册,我就去参考里面找、高德地图官方文档的参考手册工具栏中有点聚合。结果大大的白纸黑字上面写着:

哭笑不得、、、赶紧删除工单,这脸丢大发了!!!

 // 从点聚合中移除
 cluster.removeMarker(jsonMarkers[id]);
 // 创建新的点
 marker = new AMap.Marker({
     position: position,
     icon: icon_style
 });
 // 把新的点放进集合中
 jsonMarkers[id] = marker;
 // 将新的点添加到点聚合中去
 cluster.addMarker(marker);
 // 添加点击事件
 AMap.event.addListener(marker, 'click', function () {
     // 这是请求数据,并返回,自定义infowindow
     openInfoWindow(id,address,position,0);
 });
 openInfoWindow(id,address,position,done);

点聚合之中包含了原来的点的记录,所以普通删除并不会奏效,早点看官方文档就好了!!!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值