基于高德地图实现完全自定义Marker

本文介绍如何在地图社交应用中自定义高德地图的Marker样式,通过BitmapDescriptorFactory实现动态定制,包括从网络加载图片并转换为Bitmap,以及批量添加自定义Marker到地图上的方法。
摘要由CSDN通过智能技术生成

  做地图社交类APP开发的都知道,一般情况下,为了整体的美观和用户体验度,我们需要定制化Marker的样式。本文中实现的方式都是基于高德地图的,百度地图也类似,大家可以照葫芦画瓢,废话不多说,先来看看最终效果:

最终自定义Marker效果

  • 实现思路:
    先来看看高德官方提供的设置Marker图标的方法:

来自高德官方文档

我们可以看到setIcon()方法,里面的参数BitmapDescriptor就是我们最终需要的东西。那么到底该如何得到这个BitmapDescriptor对象呢,其实很简单,该对象可以通过BitmapDescriptorFactory工厂类获取,BitmapDescriptorFactory提供了以下方法来得到BitmapDescriptor对象:

/**
 * 1.通过资源id获取
 */
public static BitmapDescriptor fromResource(int var0) {
        ......
}
/**
 * 2.通过自定义的view获取
 */
 public static BitmapDescriptor fromView(View var0) {
    ...... 
}

/**
 * 3.通过具体路径资源获取
 */
 public static BitmapDescriptor fromPath(String var0) {
    ......
}

/**
 * 4.通过具体Assets资源获取
 */
 public static BitmapDescriptor fromAsset(String var0) {
    ...... 
}
/**
 * 5.通过具体文件获取
 */
public static BitmapDescriptor fromFile(String var0) {
   ......
}

/**
 * 6.通过bitmap获取
 */
 public static BitmapDescriptor fromBitmap(Bitmap var0) {
    ......

}

从以上官方提供的方法可以看到,得到BitmapDescriptor对象的方式有多种,我们可以根据自己需要自行选择。但是,为了应对频繁的需求变化,我们肯定要选择更为动态,灵活的方式来应付我们的需求变化,我们就可以选择fromView()和fromBitmap()两种方式来得到BitmapDescriptor对象了。这里选用fromBitmap()方式来得到BitmapDescriptor对象吧,因为采用fromView()方法获取后有个巨坑,这个后面再说。

  如果我们要根据需求自定义Marker,当然是希望能够让它可大可小,可动可静了,那就非view莫属了。只要我们可以自定义view布局,然后转化成bitmap不就OK了吗,好,说干就干,我们以自定义Makrer样式并加载网络图片为例,开干!

  1. 定制化Marker布局,加载网络图片:
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值