为标记创建自定义布局,如下所示
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_marker_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:textSize="12sp"
android:gravity="center_horizontal"
android:textColor="@color/white"
android:background="@drawable/ic_center_pin_green_black"/>
</FrameLayout>
充气并将其添加为标记图标
View marker = ((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custome_proximity_pin_green, null);
TextView tv_marker_text = (TextView) marker.findViewById(R.id.tv_marker_text);
tv_marker_text.setText("20");
meterMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(meterModel.getLatitude(),meterModel.getLongitude())).icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getContext(), marker))));
createDrawableFromView 方法是
private Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}