在没有绘制marker之前,你可以自定义图标
var perIcon = new BMap.Icon(per, new BMap.Size(32, 32));//per是引入的本地图标文件,也就是你想要自定义的图标
var perIcon2 = new BMap.Icon(per2, new BMap.Size(32, 32)); //改变之后的图标
let markergg = new BMap.Marker(
new BMap.Point(maplongitude, maplatitude),
{
icon: perIcon
}
);
this.map.addOverlay(markergg); //添加marker
markergg.setAnimation(BMAP_ANIMATION_BOUNCE)
let labelgg = new BMap.Label(person.devname, {
offset: new BMap.Size(20, -10)
});
markergg.setLabel(labelgg); //添加label
当你已经绘制过marker图标后,因为有需求要改变它的样式(不是指style,变成另一个图标),
可以先获取到你之前绘制的marker,通过之前添加的label,可以获取到你想要的改变的marker
let allOverlay = that.map.getOverlays()
for (let i = 0; i < allOverlay.length; i++) {
if (allOverlay[i].getLabel().content == person.devname) {//获取到你想要改变的marker
allOverlay[i].setIcon(perIcon2)//变成另一个icon
//allOverlay[i].setAnimation()
}
}
在绘制marker的时候也可以通过设置markergg.setAnimation(BMAP_ANIMATION_BOUNCE)
来 设置他弹跳动画,也能在获取到要改变的marker之后设置allOverlay[i].setAnimation()
来停止弹跳