Android百度地图sdk设置Marker不同颜色

        使用百度地图sdk,在地图上画一个marker图标很简单,如下

    private fun drawMark(point: LatLng){
        var resId = R.mipmap.icon_device//这个资源是一张图片
        //构建Marker图标
        val bitmap = BitmapDescriptorFactory.fromResource(resId)
        //构建MarkerOption,用于在地图上添加Marker
        val option: OverlayOptions = MarkerOptions()
            .position(point)
            .icon(bitmap)
        //在地图上添加Marker,并显示
        var marker = binding.mapView.map.addOverlay(option)
    }

        但是,这个icon_device是mipmap文件夹下的一张图片。如果我需要根据不同的情况显示不同颜色同一张图片,那么一张png的图片就不能满足需求了。首先需要在drawable里添加vector文件,通过dataPath画图,使用dataPath的资源文件作为图片显示在地图上,获取之后更改颜色即可。具体代码如下

private fun drawColorMark(point: LatLng, colorStr: String, degree: Float){
        var resDrawable = ContextCompat.getDrawable(activity, R.drawable.ic_cell_tower)//这是一个dataPath画的资源文件
        
        resDrawable!!.setTint(Color.parseColor(colorStr))//通过setTint修改图片颜色
        var width = resDrawable!!.getIntrinsicWidth()
        var height = resDrawable!!.getIntrinsicHeight()
        var bitmap1 = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        var canvas = Canvas(bitmap1);
        resDrawable.setBounds(0, 0, width, height);
        resDrawable.draw(canvas);
        
        //构建Marker图标
        val bitmap = BitmapDescriptorFactory.fromBitmap(bitmap1)
        //构建MarkerOption,用于在地图上添加Marker
        val option: OverlayOptions = MarkerOptions()
            .position(point)
            .icon(bitmap)
            .rotate(degree)//设置图片旋转角度
        //在地图上添加Marker,并显示
        var marker = binding.mapView.map.addOverlay(option)
    }

使用同一张资源文件,设置不同的颜色和角度,可在地图上画图不同颜色,旋转不同角度的marker。即便是经纬度相同,如果角度不同,也不会产生图片覆盖的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值