百度地图改变/替换marker图标

在没有绘制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()来停止弹跳

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
替换 Android 高德地图 SDK 中 Marker图标,可以先通过`remove`方法将原来的 Marker 从地图上移除,然后再添加一个新的 Marker,例如: ```java Marker oldMarker = aMap.addMarker(new MarkerOptions() .position(new LatLng(39.90923, 116.397428)) .icon(BitmapDescriptorFactory.fromResource(R.drawable.old_marker))); // 先将旧的 Marker 从地图上移除 oldMarker.remove(); // 添加一个新的 Marker,并设置新的图标 Marker newMarker = aMap.addMarker(new MarkerOptions() .position(oldMarker.getPosition()) .icon(BitmapDescriptorFactory.fromResource(R.drawable.new_marker))); // 将新的 Marker 设置为当前 Marker,以便后续操作 currentMarker = newMarker; ``` 其中`currentMarker`是一个成员变量,用于保存当前的 Marker 对象。 如果需要动态修改 Marker图标,可以通过上述方法不断替换 Marker图标,例如: ```java BitmapDescriptor icon1 = BitmapDescriptorFactory.fromResource(R.drawable.marker1); BitmapDescriptor icon2 = BitmapDescriptorFactory.fromResource(R.drawable.marker2); // 添加一个初始的 Marker,并设置初始图标 Marker currentMarker = aMap.addMarker(new MarkerOptions() .position(new LatLng(39.90923, 116.397428)) .icon(icon1)); // 切换图标 new Handler().postDelayed(new Runnable() { @Override public void run() { // 先将当前的 Marker 从地图上移除 currentMarker.remove(); // 添加一个新的 Marker,并设置新的图标 Marker newMarker = aMap.addMarker(new MarkerOptions() .position(currentMarker.getPosition()) .icon(icon2)); // 将新的 Marker 设置为当前 Marker,以便后续操作 currentMarker = newMarker; } }, 2000); ``` 这样就可以在2秒钟后将 Marker图标切换为另外一个资源文件了,且不会重叠。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值