在开发高德地图时,可以使用Marker的setLabel()函数设置浮动标记。
做了一个功能,每选中一个点时,在上方显示文字信息。
marker.setLabel({direction:'top',offset:new AMap.Pixel(0,0),content:'<div id="activelabel">这是被选中的点</div>'});
效果如下图所示:
如果选择另一个点,需要将当前所选点的浮动标记信息去掉。如下图所示:
但是,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 id="activelabel"></div>'});
用这个方法,文字没有了,但是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属性被设置为可见。