在上一篇博客中,我为大家介绍了百度地图的定位功能的使用方法,接下来,我将为大家介绍百度地图的另一个常见的功能:地图覆盖物。
百度地图SDK支持多种地图覆盖物,以帮助我们实现丰富的地图信息。目前所支持的覆盖物有:定位图层,地图标注(Marker),几何图层(点,线,圆和多边形),弹出窗口图层,POI检索结果覆盖物,路线规划覆盖物等等。既然百度SDK为我们提供了这么多丰富多彩的地图覆盖物,那么我们就来亲眼见证一下它的美丽吧。我将为大家逐一介绍几个比较常见的覆盖物。
定位图层+地图标注:
细心的朋友不难发现,在上一篇博客中,我们定位的默认图层是一个蓝色的小圆点,那么接下来我们就自定义一个我们自己的图层,并在我们想要的位置同样用我们自己定义的图层来标注该地理位置,先来看看效果图:
代码
如下:
定位图层:
//设置定位图层
BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.map_marker);
MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, bd);
mBaiduMap.setMyLocationConfigeration(config);
只需要
三行代码,就可以实现上述的效果了。其中BitmapDescriptor:是图层的描述类,通过工厂模式去初始化并获取我们资源库中的图片。MyLocationConfiguration:该类用来配置地图图层的显示方式,它需要三个参数:LocationMode:定位图层显示方式,默认为LocationMode.NORMAL,第二个参数为boolean型:表示是否允许显示方向信息,第三个参数则是我们的BitmapDescriptor:图层的描述类,最后我们只需要调用BaiduMap的setMyLocationConfigeration()方法便可以设置我们的定位图层了。
地图标注:
private void initMarker()
{
//定义Maker坐标点
LatLng point = new LatLng(mCurrentLan, mCurrentLon);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.maker);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);
}
那么到底改如何实现我们上述的功能了,其实我们可以调用百度地图的setOnMapClickListener监听方法,它会返回给我们一个地理坐标信息类:LanLng,根据这个类,我们就可以很容易去获取我们的地理坐标了,然后我们就可以在获取到的坐标位置标注图层信息了。
弹出窗口图层:
先来阐述一下我们接下来需要实现的功能:就是在我们的某个地图标注上面弹出一个自定义的窗口,并在窗口上显示我们的地址信息,这边我们需要用到地理反编码的接口,以将我们的地理坐标转换成我们的地址信息。效果图如下:
代码
如下:
弹出窗口图层: