感谢我大哥提供的思路!!!
就是这个小崽子 ↓
dataList : 数据List
points : 经纬度List
private void buildMarker(int index){
Bundle bundle = new Bundle();
bundle.putSerializable("userData",dataList.get(index));
View marker_user = LayoutInflater.from(me).inflate(R.layout.marker_map_res, null);
//加载头像
ImageView marker_userHead = marker_user.findViewById(R.id.marker_userHead);
String path = dataList.get(index).getUserHeadPath() == null ? "null" : dataList.get(index).getUserHeadPath();
Glide.with(me)
.asBitmap()
.load(path)
.transform(new CenterCrop(),new CircleCrop())
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
marker_userHead.setImageResource(R.mipmap.user_avatar);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
//位置 必传
.position(points.get(index))
//图标 必传
.icon(view2Marker(marker_user))
//额外信息
.extraInfo(bundle)
//是否可拖拽
.draggable(false)
//设置平贴地图,在地图中双指下拉查看效果
.flat(true)
//加载时动画
.animateType(MarkerOptions.MarkerAnimateType.grow);
//在地图上添加Marker,并显示
mapViewCtrl.addOverlay(option);
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
marker_userHead.setImageBitmap(resource);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
//位置 必传
.position(points.get(index))
//图标 必传
.icon(view2Marker(marker_user))
//额外信息
.extraInfo(bundle)
//是否可拖拽
.draggable(false)
//设置平贴地图,在地图中双指下拉查看效果
.flat(true)
//加载时动画
.animateType(MarkerOptions.MarkerAnimateType.grow);
//在地图上添加Marker,并显示
mapViewCtrl.addOverlay(option);
return false;
}
}).preload();
}
/**
* 把View转成Marker的Icon
* @param view 要转换的View
* @return
*/
private BitmapDescriptor view2Marker(View view){
view.setDrawingCacheEnabled(true);
view.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0,
view.getMeasuredWidth(),
view.getMeasuredHeight());
view.buildDrawingCache();
//获取到图片,这样就可以添加到Map上
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
return BitmapDescriptorFactory.fromBitmap(bitmap);
}