高德地图中隐藏Marker的标记

在开发高德地图时,可以使用Marker的setLabel()函数设置浮动标记。

做了一个功能,每选中一个点时,在上方显示文字信息。

marker.setLabel({direction:'top',offset:new AMap.Pixel(0,0),content:'

这是被选中的点
'});

效果如下图所示:

高德地图中隐藏Marker的标记_第1张图片

如果选择另一个点,需要将当前所选点的浮动标记信息去掉。如下图所示:

高德地图中隐藏Marker的标记_第2张图片

但是,Marker对象中只有setLabel()和getLabel()两个函数,并没有提供removeLabel()函数。

有人建议使用marker.setLabel(''), marker.setLabel('none'), marker.setLabel(null)等函数,经测试均无效。

试了一下,在setLabel()时,将content内容设置为空,如下:

marker.setLabel({direction:'top',offset:new AMap.Pixel(0,0),content:'

'});

用这个方法,文字没有了,但是div的方框还在。有人将Label所在的div的边框设置为0宽度,并将div的底色设置为透明,也达到了隐藏已有的标记的效果。

但我觉得应该有更好的办法。

经分析思考,认为浮动标记无非是div标签。只要找到该标签,将其设置为不显示即可。

于是:

var active_label = document.getElementById("activelabel"); //通过名字获取自定义标签的div对象

var active_label_top = active_label.parentNode; //获取上一级div对象

active_label_top.removeChild(active_label); //删除自定义的标签

active_label_top.style.visibility='hidden'; //将Label所在标签设置为隐藏。

经测试,该方法可以隐藏已显示的Marker的浮动标签。同时,当使用setLabel()函数再次选择该点时,仍然会出现浮动标签。说明该函数重新创建了浮动标签,其visibility属性被设置为可见。

你可能感兴趣的:(javascript)