关于百度地图(三)添加覆盖物自定义布局及遇到的一些bug解决方法
来源:互联网 发布:皓思网络 编辑:程序博客网 时间:2024/05/19 16:35
1.前面两篇写了百度地图的定位,但是我们使用地图显然不单单是定位,常用的一个就是添加marker覆盖物
这里添加marker的覆盖物,我单独写了一个方法出来,如下:
public void addMarker(final List<DBuildingInfo> list){ mapShowProgress(true); new Thread(new Runnable() { @Override public void run() { //建筑标志 Float lat,lng; Marker marker = null; LatLng point;//marker位置// OverlayOptions textOption;//marker文字 ViewHolder viewHolder; if (view == null) { view = View.inflate(context, R.layout.item_baidumap_marker, null); viewHolder = new ViewHolder(); viewHolder.tvDbiName = (TextView) view.findViewById(R.id.tv_dbiName); viewHolder.tvDuiName = (TextView) view.findViewById(R.id.tv_duiName); viewHolder.imgMarker=(ImageView) view.findViewById(R.id.img_Marker); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } {***这里是我自己项目中的一个关于marker的逻辑处理***} String[] latlng=list.get(i).getDbiMapposition().split(","); lat=new Float(latlng[0]); lng=new Float(latlng[1]); BitmapDescriptor bitmapDescriptor=BitmapDescriptorFactory.fromView(view); point = new LatLng(lng,lat);// textOption = new TextOptions().position(point); OverlayOptions option = new MarkerOptions()//构建MarkerOption,用于在地图上添加Marker .position(point) .icon(bitmapDescriptor) .zIndex(5);// mBaiduMap.addOverlay(option);//在地图上添加Marker,并显示// mBaiduMap.addOverlay(textOption);//在地图上添加该文字对象并显示 marker = (Marker) (mBaiduMap.addOverlay(option));//将信息添加到Marker marker.setAnchor(0.5f,0.5f);//设置经纬度的点在maker的中心点 marker.setZIndex(14);//设置marker的层级,层级越高,在地图上越在上面(会影响marker的点击事件) Bundle bundle = new Bundle();//点击的marker的Bean信息 bundle.putSerializable("info", list.get(i));//key是"info" marker.setExtraInfo(bundle); if (list.size()==0||list.size()==i+1){ handler.sendEmptyMessage(HANDLE_MESSAGE);//加完marker的时候弹窗消失 } } } }).start(); } private static class ViewHolder { public TextView tvDuiName; public TextView tvDbiName; public ImageView imgMarker; }
可以看到,这里我自己写了一个布局,因为百度默认的还是不能满足我项目的要求。加载marker是一个耗时过程,我new了一个新的线程来执行这一操作。
Marker的点击事件:在Activity中,实现onMarkerClick接口:
@Override public boolean onMarkerClick(Marker marker) { final DBuildingInfo info; //获得marker中的数据 if (marker != null && marker.getExtraInfo() != null && marker.getExtraInfo().get("info") != null) { //marker info = (DBuildingInfo) marker.getExtraInfo().get("info"); showUnitInfoDialog(info);//好了,这样就拿到了点击的这个marker的数据,想拿去干嘛就拿去干嘛了 return true; }
2.画几何图形。在官方文档中,我们可以看到介绍,可以画点(Dot)、折线(Polyline)、弧线(Arc)、圆(Circle)、多边形(Polygon)。并且给出了一个示例:
//定义多边形的五个顶点 LatLng pt1 = new LatLng(39.93923, 116.357428); LatLng pt2 = new LatLng(39.91923, 116.327428); LatLng pt3 = new LatLng(39.89923, 116.347428); LatLng pt4 = new LatLng(39.89923, 116.367428); LatLng pt5 = new LatLng(39.91923, 116.387428); List<LatLng> pts = new ArrayList<LatLng>(); pts.add(pt1); pts.add(pt2); pts.add(pt3); pts.add(pt4); pts.add(pt5); //构建用户绘制多边形的Option对象 OverlayOptions polygonOption = new PolygonOptions() .points(pts) .stroke(new Stroke(5, 0xAA00FF00)) .fillColor(0xAAFFFF00); //在地图上添加多边形Option,用于显示 mBaiduMap.addOverlay(polygonOption);
非常简单,那如果我画一个圆呢,那我们就在工具类中写上一个方法,然后再activity里调用
public Overlay circleOverlay; public void addRound(final LatLng latLng) { //构建圆 OverlayOptions circleOptions = new CircleOptions() .stroke(new Stroke(6, 0xAA4DB38A)) .fillColor(0) .radius(150) .center(latLng); circleOverlay = mBaiduMap.addOverlay(circleOptions); }
那如果删除这个呢:
public void removeRound() { if (circleOverlay!=null) { circleOverlay.remove(); } }
阅读全文
0 0
- 关于百度地图(三)添加覆盖物自定义布局及遇到的一些bug解决方法
- Android 百度地图添加自定义marker(覆盖物)不显示图片的解决方法
- 百度地图的覆盖物自定义(三)--自定义搜索结果+标注+覆盖物
- 百度地图添加复杂的自定义覆盖物
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 【百度地图】 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- BaiduMap---百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 垂直爬虫
- 第二周实践项目三(2)
- tab切换——点击
- MyBatis高级映射之一对多查询
- L2-009. 抢红包
- 关于百度地图(三)添加覆盖物自定义布局及遇到的一些bug解决方法
- Python 异常处理
- java插入排序
- Linux定时启动运行程序的方法
- 降级熔断框架 Hystrix 源码解析:滑动窗口统计
- [Noi2010] D1T1 能量采集 (欧拉函数)
- 第2周【项目3
- JVM内存模型及String对象内存分配
- 结构体对齐