三、android百度地图覆盖物(android百度地图SDK系列)

在第二篇文章的时候我曾经说过,还会有一篇添加覆盖物的讲解,这一篇就是专门写覆盖物的。百度地图SDK的覆盖物乍一看没有头绪,但是看明白文档了还是很简单的,下面就来看看怎么来实现覆盖物的功能。

(android百度地图SDK系列)
一、android集成百度地图(android百度地图SDK系列)
二、android百度地图定位显示当前位置(android百度地图SDK系列)
三、android百度地图覆盖物(android百度地图SDK系列)

一、标注覆盖物

经常我们在很多APP里都可以看见地图上标注了很多特定的点,这些点就是标注覆盖物了。它的用法很简单,细心的朋友在第二篇应该会发现在添加中心点的时候有一个叫Maker的东西,没错就是它了。话不多说我们之间看代码:

    private void setMarker() {
        //定义Maker坐标点
        LatLng point = new LatLng(29.275412, 106.279981);
        LatLng point1 = new LatLng(29.275422, 106.279991);
        LatLng point2 = new LatLng(29.273311, 106.278621);
        LatLng point3 = new LatLng(29.278813, 106.285511);
        //构建Marker图标
        BitmapDescriptor bitmap = BitmapDescriptorFactory
                .fromResource(R.mipmap.location_marker);
        //构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions()
                .position(point)
                .icon(bitmap);
        OverlayOptions option1 = new MarkerOptions()
                .position(point1)
                .icon(bitmap);
        OverlayOptions option2 = new MarkerOptions()
                .position(point2)
                .icon(bitmap);
        OverlayOptions option3 = new MarkerOptions()
                .position(point3)
                .icon(bitmap);
        //在地图上添加Marker,并显示
        baiduMap.addOverlay(option);
        baiduMap.addOverlay(option1);
        baiduMap.addOverlay(option2);
        baiduMap.addOverlay(option3);
    }

以上代码就是标注了四个覆盖物,注释很详细,相信都可以轻松的看懂。不过光有代码还是不够直观我们再看看运行效果吧:


标注效果图

二、几何图形覆盖物

有时候我们会需要在地图上画出所需要的覆盖范围,这就需要用到几何图形覆盖物了。在百度地图API里可以看到它做了一个5个点的多边形覆盖物,然而一般都是用圆形比较多,而且API里也写了可以支持点(Dot)、折线(Polyline)、弧线(Arc)、圆(Circle)、多边形(Polygon),这里我就用圆做个例子,还是老套路,先上代码:

    public void drawCircle() {
        //设置圆心的左边
        LatLng pt1 = new LatLng(29.276107, 106.281771);
        OverlayOptions overlayOptions = new CircleOptions()
                .center(pt1)
                //设置圆的颜色
                .fillColor(Color.parseColor("#201c3d6f"))
                //设置边缘线的颜色
                .stroke(new Stroke(0,Color.parseColor("#ffffff")))
                //设置半径
                .radius(300);
        baiduMap.addOverlay(overlayOptions);
    }

代码就是这样了,同样很简单,注释也同样很详细。需要强调的是在设置颜色的时候如果是写在color配置文件里,有时候会没有效果,而用Color.parseColor则没有问题。好了我们看看运行效果吧

圆形覆盖物

到这里,android百度地图SDK系列就要告一段落了,这主要是项目中遇见的顺便做个总结以防后人踩坑,也防自己以后踩坑,如果后面在地图上会有新的需求那么也会加上来的。最后强调一点,一定要开启定位图层,不然覆盖物无效。

推荐阅读更多精彩内容