安卓开发-百度地图-几何图形覆盖物+文字覆盖物+弹出窗覆盖物+地图类型+地图控制和手势

来源:互联网 发布:淘宝店铺公告图片 编辑:程序博客网 时间:2024/05/05 06:07

《一:几何图形覆盖物》
地图SDK提供多种结合图形覆盖物,利用这些图形,可帮助您构建更加丰富多彩的地图应用。目前提供的几何图形有:点(Dot)、折线(Polyline)、弧线(Arc)、圆(Circle)、多边形(Polygon)。在百度地图上展示覆盖物,需使用百度BD09坐标,如使用其他坐标( WGS84、GCJ02)进行展示,需先将其他坐标转换为BD09,详细说明请参考坐标转换页面,请勿使用非官方的转换方法。

1.绘制五边形:(五个点+边界颜色+填充颜色(透明的)):

//1.定义多边形的五个顶点  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);  //2.构建用户绘制多边形的Option对象  OverlayOptions polygonOption = new PolygonOptions()      .points(pts)      .stroke(new Stroke(5, 0xAA00FF00)) //边界颜色    .fillColor(0xAAFFFF00);  //内部填充颜色//3.在地图上添加多边形mBaiduMap.addOverlay(polygonOption);

2.Android地图SDK自v3.5.0版本起,新增了折线多段颜色绘制能力,实现的核心代码如下:

2.1.定义点
2.2.定义自定义纹理(BitmapDescriptor)
2.3.形成纹理队列.点队列.纹理索引队列
2.4.创建OverlaySooPoly,添加三个队列,,宽,颜色
2.5 将折线段添加到地图中

//1.定义点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);//2.定义自定义纹理(BitmapDescriptor)BitmapDescriptor custom1 = BitmapDescriptorFactory.fromResource(R.drawable.girl_1);BitmapDescriptor custom2 = BitmapDescriptorFactory.fromResource(R.drawable.girl_2);BitmapDescriptor custom3 = BitmapDescriptorFactory.fromResource(R.drawable.girl_3);//3.形成纹理队列.点队列.纹理索引队列List<LatLng> points = new ArrayList<>();List<BitmapDescriptor> customList = new ArrayList<>();List<Integer> indexs = new ArrayList<>();points.add(pt1);points.add(pt2);points.add(pt3);points.add(pt4);points.add(pt5);customList.add(custom1);customList.add(custom2);customList.add(custom3);indexs.add(0);indexs.add(0);indexs.add(1);indexs.add(2);indexs.add(3);//4.创建OverlaySooPoly,为折线添加点,纹理定制,纹理索引三个队列,,宽,颜色OverlayOptions ooPolyLine = new PolylineOptions().points(points).customTextureList(customList).textureIndex(indexs).width(10).color(0xAAFF00FF);//5.将折线段添加到地图中mBaiduMap.addOverlay(ooPolyLine);

3。自v3.6.0版本起,扩展了折线多段颜色绘制能力:增加支持分段纹理绘制、分段颜色绘制,构造PolylineOptions对象,添加折线分段颜色绘制覆盖物,核心代码如下:

//1.构造折线点坐标List<LatLng> points = new ArrayList<LatLng>();points.add(new LatLng(39.965,116.404));points.add(new LatLng(39.925,116.454));points.add(new LatLng(39.955,116.494));points.add(new LatLng(39.905,116.554));points.add(new LatLng(39.965,116.604));//2.构建分段颜色索引数组List<Integer> colors = new ArrayList<>();colors.add(Integer.valueOf(Color.BLUE));colors.add(Integer.valueOf(Color.RED));colors.add(Integer.valueOf(Color.YELLOW));colors.add(Integer.valueOf(Color.GREEN));//3.为折线添加折线点坐标和分段颜色索引列表。。宽等OverlayOptions ooPolyline = new PolylineOptions().colorsValues(colors).points(points).width(10);//4.将折线段添加到地图中mBaiduMap.addOverlay(ooPolyline);

《二:文字覆盖物》

//1.定义文字所显示的坐标点LatLng llText = new LatLng(39.86923, 116.397428);//2.构建文字Option对象,用于在地图上添加文字 OverlayOptions ooText = new TextOptions().position(llText).text("百度地图").bgColor(0xAAFFFF00).fontSize(24).fontColor(0xFFFF0000);//3.在地图上添加该文字对象并显示mBaiduMap.addOverlay(ooText);

《三:弹出窗覆盖物》

//1.定义marker位置点LatLng point = new LatLng(39.963175, 116.400244);//2.定义标注物的图标BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);//3.定义标注物对象OverlayOptions ooD = new MarkerOptions().position(point).icon(bitmap);//4.将标注物添加到地图上mBaiduMap.addOverlay(ooD);//5.设置标注物的点击监听器 mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {    public boolean onMarkerClick(Marker arg0) {        //1.创建InfoWindow展示的view(此处Button)        Button btn = new Button(getApplicationContext());        btn.setBackgroundResource(R.drawable.ic_launcher);        //2.定义用于显示该InfoWindow的坐标点         LatLng pt = new LatLng(39.963175, 116.400244);        //3.传入 view, 地理坐标, y 轴偏移量 创建InfoWindow ,         InfoWindow mInfoWindow = new InfoWindow(btn, pt, -47);        //4.显示InfoWindow        mBaiduMap.showInfoWindow(mInfoWindow);        //默认即可        return false;        }    });

《四:地图类型》

//1.空白地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);//2.普通地图(默认)mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//3.卫星地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);*///4.实时交通图(有明显路线显示)mBaiduMap.setTrafficEnabled(true);//5.百度城市热力图mBaiduMap.setBaiduHeatMapEnabled(true);*/

《五:地图控制和手势》

1:地图Logo(默认放在左下方,)//1.1:设置地图Logo大体位置,可以放在   左上,左下;中上,中下;右上,右下   六个位置mMapView.setLogoPosition(LogoPosition.logoPostionCenterTop);//1.2:设置地图的绝对位置,距离  左上右下    多远mMapView.setPadding(10, 10, 200, 200);2:指南针和比例尺默认是开启状态(旋转地图可见指南针),可以关闭显示;可以设置最大比例和最小比例//2.1:设置最大比例和最小比例mBaiduMap.setMaxAndMinZoomLevel(arg0, arg1);//2.2:得到当前地图比例mMapView.getMapLevel();3:地图手势,地图平移,缩放,俯视(3D),旋转这四种默认是开启的,禁止所有手势默认是关闭的。