本文主要是介绍android 百度地图自定义添加覆盖物(Overlay),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
把我们自定义的布局转成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()));//设置markeroptions = new MarkerOptions().position(new LatLng(poi.getLat(), poi.getLng()))//设置位置.icon(bitmap)//设置图标样式.zIndex(9) // 设置marker所在层级.draggable(true); // 设置手势拖拽;//添加markermarker = (Marker) baiduMap.addOverlay(options);Bundle bundle = new Bundle();//marker中添加数据,点击的时候可以获取到做对应的处理。bundle.putString("key", "value");marker.setExtraInfo(bundle);}}
布局文件自己写,我做的简单效果如图中泡泡加文字效果:
这篇关于android 百度地图自定义添加覆盖物(Overlay)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!