年前在做项目时,客户提了一个需求,在手机客户端中需要集成海康威视摄像头的视频监控功能,并在需要在地图中加载摄像头的位置,并通过点击进入摄像头监控视频界面,如图1所示:
图片1
marker默认只能加载bitmap图片,客户要求需要在摄像头图标上用文字标记出摄像头位置(没办法用户要啥就得整啥),求助百度,找到一个比较靠谱的实现方案,就是将view转换成Bitmap,然后在设置到marker中。首先自定义布局view_map_point_xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:gravity="center_vertical" android:orientation="vertical" android:padding="10dp"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="1" android:textColor="#686868" android:textSize="15sp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:padding="5dip" android:scaleType="centerCrop" android:src="@drawable/icon_location_map" /> </LinearLayout>
最后实现将view转成Bitmap的方法, 代码如下:
private Bitmap getViewBitmap(String text) { View addViewContent = LayoutInflater.from(this).inflate(R.layout.view_map_point, null); TextView textView = addViewContent.findViewById(R.id.tv_name); textView.setText(text); addViewContent.setDrawingCacheEnabled(true); addViewContent.measure( View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); addViewContent.layout(0, 0, addViewContent.getMeasuredWidth(), addViewContent.getMeasuredHeight()); addViewContent.buildDrawingCache(); Bitmap cacheBitmap = addViewContent.getDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); return bitmap; }
标签: