浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

本章节将对点标记、添加Marker、绘制自定义Marker、批量添加和删除Marker、Marker点击和拖拽操作、点聚合、InfoWindow以及控制地图标注显示(包括POI和ICON)等作进一步说明。
点标记

点标记用来在地图上标记任何位置,例如用户位置、车辆位置、店铺位置等一切带有位置属性的事物。
地图 SDK 提供的点标记功能包含两大部分,一部分是点(俗称 Marker)、另一部分是浮于点上方的信息窗体(俗称 InfoWindow)。同时,SDK 对 Marker 和 InfoWindow 封装了大量的触发事件,例如点击事件、长按事件、拖拽事件。
由于内容丰富,以下只能展示一些基础功能的使用,详细内容可分别参考官方参考手册。

添加Marker

开发者可以根据自己实际的业务需求,利用标注覆盖物,在地图指定的位置上添加标注信息。开发者通过MarkerOptions类来设置Marker的属性。

绘制Marker的代码如下:

//定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
        .fromResource(R.drawable.icon_marka);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
        .position(point)
        .icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);

addpopint1.png

绘制自定义Marker

可根据实际的业务需求,在地图指定的位置上添加自定义的 Marker。MarkerOptions 是设置 Marker 参数变量的类,添加 Marker 时会经常用到。

Marker常用属性:

名称 说明
icon 设置图标
animateType 动画类型 MarkerAnimateType.none
MarkerAnimateType.drop
MarkerAnimateType.grow
MarkerAnimateType.jump
alpha 透明度
position 位置坐标
perspective 是否开启近大远小效果 true
false
draggable 是否可拖拽
flat 是否平贴地图 (俯视图)(双手下拉地图查看效果) true
false
anchor 锚点比例
rotate 旋转角度
title 设置标题
visible 是否可见
extraInfo 额外信息

自定义Marker示例

//定义Maker坐标点
LatLng point = new LatLng(39.944251, 116.494996);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
        .fromResource(R.drawable.marker_custom);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
        .position(point) //必传参数
        .icon(bitmap) //必传参数
        .draggable(true)
//设置平贴地图,在地图中双指下拉查看效果
        .flat(true)
        .alpha(0.5f);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);

效果如图:

addpopint2.png

自V3.6.0起,原内置覆盖物相关类代码开源

覆盖物开源代码中提供了一些基于基础覆盖而组合而成的高级覆盖物,包括用于显示poi数据,规划路线,公交详情路线的覆盖物。

OverlayManager /PoiOverlay / IndoorPoiOverlay /IndoorRouteOverlay /TransitRouteOverlay /WalkingRouteOverlay /BikingRouteOverlay /DrivingRouteOverlay /BusLineOverlay /MassTransitRouteOverlay / 以上源码可在BaiduMapsApiDemo工程中找到。

可触发的Marker事件

Marker点击事件

点击Marker时会回调BaiduMap.OnMarkerClickListener,监听器的实现方式示例如下:

mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
    //marker被点击时回调的方法
    //若响应点击事件,返回true,否则返回false
    //默认返回false
    @Override
    public boolean onMarkerClick(Marker marker) {
        return false;
    }
});

Marker拖拽事件

在拖拽Marker时会回调BaiduMap.OnMarkerDragListener,监听器的实现方式如下(要在构造MarkerOptions时开启draggable):

mBaiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() {

            //在Marker拖拽过程中回调此方法,这个Marker的位置可以通过getPosition()方法获取
            //marker 被拖动的Marker对象
            @Override
            public void onMarkerDrag(Marker marker) {
                 //对marker处理拖拽逻辑               
            }

            //在Marker拖动完成后回调此方法, 这个Marker的位可以通过getPosition()方法获取
            //marker 被拖拽的Marker对象
            @Override
            public void onMarkerDragEnd(Marker marker) {

            }

            //在Marker开始被拖拽时回调此方法, 这个Marker的位可以通过getPosition()方法获取
            //marker 被拖拽的Marker对象
            @Override
            public void onMarkerDragStart(Marker marker) {

            }
});



底图标注

自V3.6.0版本起,SDK在BaiduMap提供了控制底图标注的showMapPoi方法,默认显示底图标注。利用此属性可得到仅显示道路信息的地图,方法如下:

 mBaiduMap.showMapPoi(false);

运行后,底图标注被隐藏,效果如图:

addpopint3.png

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消