博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 百度地图 通过剪裁图片添加 Marker
阅读量:6210 次
发布时间:2019-06-21

本文共 3966 字,大约阅读时间需要 13 分钟。

初始化百度地图:

1 private void initViews() {2 4         mMapView = (MapView) findViewById(R.id.bmapView);5         mBaiduMap = mMapView.getMap();6         // 初始化地图范围级别7         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(14.0f);8         mBaiduMap.setMapStatus(msu);9     }

--------------------华丽分割线-----------------------

// 初始化bitmap 信息,不用时及时 recycleBitmapDescriptor friend_1;

初始化剪裁的图片(此处为生成圆形图片):

1 friend_1 = BitmapDescriptorFactory.fromBitmap(2                     BMapUtil.createCircleImage(BitmapFactory.decodeResource(getResources(), R.drawable.friend_1), 90));

圆形图片生成方法:

1 /** 2      * 根据原图和变长绘制圆形图片 3      * @param source 4      * @param min 5      * @return 6      */ 7     public static Bitmap createCircleImage(Bitmap source, int radius) { 8         Bitmap scaledSrcBmp; 9         int diameter = radius * 2;10         // 为了防止宽高不相等,造成圆形图片变形,因此截取长方形中处于中间位置最大的正方形图片11         int bmpWidth = source.getWidth();12         int bmpHeight = source.getHeight();13         int squareWidth = 0, squareHeight = 0;14         int x = 0, y = 0;15         Bitmap squareBitmap;16         if (bmpHeight > bmpWidth) {
// 高大于宽17 squareWidth = squareHeight = bmpWidth;18 x = 0;19 y = (bmpHeight - bmpWidth) / 2;20 // 截取正方形图片21 squareBitmap = Bitmap.createBitmap(source, x, y, squareWidth,22 squareHeight);23 } else if (bmpHeight < bmpWidth) {
// 宽大于高24 squareWidth = squareHeight = bmpHeight;25 x = (bmpWidth - bmpHeight) / 2;26 y = 0;27 squareBitmap = Bitmap.createBitmap(source, x, y, squareWidth,28 squareHeight);29 } else {30 squareBitmap = source;31 }32 if (squareBitmap.getWidth() != diameter33 || squareBitmap.getHeight() != diameter) {34 scaledSrcBmp = Bitmap.createScaledBitmap(squareBitmap, diameter,35 diameter, true);36 } else {37 scaledSrcBmp = squareBitmap;38 }39 Bitmap output = Bitmap.createBitmap(scaledSrcBmp.getWidth(),40 scaledSrcBmp.getHeight(), Config.ARGB_8888);41 Canvas canvas = new Canvas(output);42 43 Paint paint = new Paint();44 Rect rect = new Rect(0, 0, scaledSrcBmp.getWidth(),45 scaledSrcBmp.getHeight());46 47 paint.setAntiAlias(true);48 paint.setFilterBitmap(true);49 paint.setDither(true);50 canvas.drawARGB(0, 0, 0, 0);51 canvas.drawCircle(scaledSrcBmp.getWidth() / 2,52 scaledSrcBmp.getHeight() / 2, scaledSrcBmp.getWidth() / 2,53 paint);54 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));55 canvas.drawBitmap(scaledSrcBmp, rect, rect, paint);56 bmp = null;57 squareBitmap = null;58 scaledSrcBmp = null;59 return output;60 }

初始化位置信息:

1 LatLng position_1 = new LatLng(39.963175, 116.400244);

初始化OverlayOptions:

1 OverlayOptions ooA = new MarkerOptions().position(position_1).icon(friend_1)2                 .zIndex(9).draggable(true);

再通过addOverlay添加到地图:

1 mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));

注册setOnMarkerClickListener:

mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {            public boolean onMarkerClick(final Marker marker) {       // todo 判断mMarkerA 的点击事件       }}

当退出时,释放资源:

@Override    protected void onPause() {        // MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()        mMapView.onPause();        super.onPause();    }    @Override    protected void onResume() {        // MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()        mMapView.onResume();        super.onResume();    }    @Override    protected void onDestroy() {        // MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()        mMapView.onDestroy();        super.onDestroy();        // 回收 bitmap 资源        friend_1.recycle();    }

 

转载地址:http://eisja.baihongyu.com/

你可能感兴趣的文章
Spring boot 和 Shiro 做后台跨域访问权限控制遇到的问题
查看>>
animationend 事件
查看>>
JS进阶篇--JS中的反柯里化( uncurrying)
查看>>
MySQL常见问题总结
查看>>
关于多电脑布署hexo博客,和在线更新文章
查看>>
Angular 学习笔记:$digest 实现原理
查看>>
leetcode98. Validate Binary Search Tree
查看>>
redis Q&A
查看>>
【170天】黑马程序员27天视频学习笔记【Day08-下】
查看>>
Day20 - 语言识别系统中文指南
查看>>
Python迭代器、生成器、装饰器深入解读
查看>>
Node.js异步I/O,事件驱动
查看>>
返回信息流页面重新加载问题
查看>>
ie百分比的圆
查看>>
常用CSS布局
查看>>
起步-学习php扩展开发的背景
查看>>
264. Ugly Number II & 313. Super Ugly Number
查看>>
Azure Service Fabric正式发布
查看>>
节俭式创新:用更少资源,做更多的事
查看>>
使用Prometheus和Grafana实现SLO
查看>>