把我们自定义的布局转成Bitmap,方便添加到百度地图上。
/*
**把自定义的布局文件转成Bitmap
*/
private Bitmap changeView2Drawble(String num, String name) {
View view = LayoutInflater.from(this).inflate(R.layout.custom_bd_pop, null);
//显示数字,如小区人数
TextView textView = view.findViewById(R.id.pop_num);
//显示文字,如小区名称
TextView pop_name = view.findViewById(R.id.pop_name);
textView.setText(num);
pop_name.setText(name);//文字过长可以做处理
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 bitmap;
}
根据经纬度位置,添加我们要的Overlay图层。
/**
* @作者
* @时间
* @描述 绘制数据到地图上,Poi类是自己写的实体类
*/
private void drawPoiOnMap(Poi poi) {
BitmapDescriptor bitmap;
Marker marker;
OverlayOptions options;
bitmap = BitmapDescriptorFactory.fromBitmap(changeView2Drawble(poi.getPortNum(), poi.getPoiName()));
//设置marker
options = new MarkerOptions()
.position(new LatLng(poi.getLat(), poi.getLng()))//设置位置
.icon(bitmap)//设置图标样式
.zIndex(9) // 设置marker所在层级
.draggable(true); // 设置手势拖拽;
//添加marker
marker = (Marker) baiduMap.addOverlay(options);
Bundle bundle = new Bundle();
//marker中添加数据,点击的时候可以获取到做对应的处理。
bundle.putString("key", "value");
marker.setExtraInfo(bundle);
}
}