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

Android 地图SDK

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

产品简介

百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

重点功能简介
  • 地图展示与交互
    简介
    地图展示:普通地图(2D,3D)、卫星图和实时交通图,开放高清4K地图显示。
    地图交互:可通过接口或手势控制来实现地图的单击、双击、长按、缩放、旋转、改变视角等操作。
    功能展示
    public class MainActivity extends Activity {
        private MapView mMapView = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获取地图控件引用  
            mMapView = (MapView) findViewById(R.id.bmapView);
            mBaiduMap = mMapView.getMap();
            //显示卫星图层
            mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时必须调用mMapView. onResume ()
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时必须调用mMapView. onPause ()
            mMapView.onPause();
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时必须调用mMapView.onDestroy()
            mMapView.onDestroy();
        }
    }
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/BaiduMap.mp4
  • 室内地图
    简介
    自百度地图SDK V4.0版本起,室内图功能正式上线,辅助开发者实现全新的地理位置服务体验,室内地图与百度地图App同步更新。
    支持的公众建筑包含购物商场、机场和火车站等交通枢纽、医院等。覆盖全国4000+个大型购物中心。
    功能展示
    //打开室内图,默认为关闭状态
    mBaiduMap.setIndoorEnable(true);
    mBaiduMap.setOnBaseIndoorMapListener(new BaiduMap.OnBaseIndoorMapListener() {
         /**
            * 地图进入室内图模式回调函数
            *
            * @param in 是否进入室内图模式
            * @param mapBaseIndoorMapInfo室内图信息
        */
    
    @Override
    public void onBaseIndoorMapMode(boolean in, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) {
       if (in) {
                   // 进入室内图
                  // 通过获取回调参数 mapBaseIndoorMapInfo 便可获取室内图信息,包含楼层信息,室内ID等
              } else {
                 // 移除室内图
             }
        }
    });
    //实现楼层间地图切换,展示不同楼层的室内图   
    SwitchFloorError switchFloorError = mBaiduMap.switchBaseIndoorMapFloor(strFloor, floorID);
    //上面代码中,strFloor表示室内图楼层,格式为F1,B1… strID 表示室内图ID;返回值switchFloorError 用于标识楼层切换错误信息, 具体如下:
    //切换楼层成功
    SWITCH_OK 
    // 切换楼层, 室内ID信息错误
    FLOOR_INFO_ERROR,
    //楼层溢出
    FLOOR_OVERLFLOW,
    //切换楼层室内ID与当前聚焦室内ID不匹配
    FOCUSED_ID_ERROR,
    //切换楼层失败
    SWITCH_ERROR
    
                     
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/indoorMap.mp4
  • 海外地图
    简介
    百度地图SDK支持海外地图的展示能力,包含全球209个国家或地区详细道路、POI等数据展示。
    功能展示
    /**
     * 初始化地图SDK
     */
    public class DemoApplication extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            //在使用SDK各组件之前初始化context信息,传入ApplicationContext   
            SDKInitializer.initialize(this);
            //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
            //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
            SDKInitializer.setCoordType(CoordType.BD09LL);
        }
    }
    /**
     *创建Activity, 地图生命周期管理
     */
    public class MainActivity extends Activity {
        private MapView mMapView = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获取地图控件引用
            mMapView = (MapView) findViewById(R.id.bmapView);
            //地图状态参数配置(经纬度是国外)
            MapStatus ms = new MapStatus.Builder().zoom(10).target(new LatLng(51.50556,-0.07556 )).build();
            MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
            //更新地图状态
            mBaiduMap.animateMapStatus(u);
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时必须调用mMapView. onResume ()
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时必须调用mMapView. onPause ()
            mMapView.onPause();
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时必须调用mMapView.onDestroy()
            mMapView.onDestroy();
        }
    }
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/foreign.mp4
  • 地图覆盖物
    简介
    百度地图SDK支持多种地图覆盖物,帮助您展示更丰富的地图。
    地图覆盖物:地图标注(Marker、InfoWindow)、几何图形(点、折线、弧线、多边形、圆、文字等)、POI检索结果覆盖物、线路规划结果覆盖物等。以下是Marker动画示例展示(以缩放动画为例)。
    功能展示
    //创建marker
    MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA);
    //添加marker
    mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));
    private Animation getScaleAnimation() {
        //创建缩放动画
        ScaleAnimation mScale = new ScaleAnimation(1f, 2f, 1f);
        //设置动画执行时间
        mScale.setDuration(2000);
        //动画重复模式
        mScale.setRepeatMode(Animation.RepeatMode.RESTART); 
        //动画重复次数
        mScale.setRepeatCount(1);
        //设置缩放动画监听
        mScale.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart() {
            }
            @Override
            public void onAnimationEnd() {
            }
            @Override
            public void onAnimationCancel() {
            }
            @Override
            public void onAnimationRepeat() {
            }
        });
        return mScale;
    }
    /**
     * 开启单边缩放动画 X或Y方向
     */
    public void startSingleScaleAnimation() {
        //marker设置动画
        mMarkerG.setAnimation(getSingleScaleAnimation());
       //开启marker动画
        mMarkerG.startAnimation();
    }
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/markerAnimation.mp4
  • POI检索
    简介
    百度地图SDK支持周边检索、区域检索、城市内检索和POI详情信息检索。
    周边检索:以某一点为中心,指定距离为半径,根据输入的关键词进行POI检索。
    区域检索:在指定矩形区域内、根据关键词进行POI检索。
    城市内检索:在某一城市内,根据用户输入的关键字进行POI检索。
    POI详情信息检索:根据POI的UID信息,检索该POI点的详情。
    功能展示
     /**
     * 周边poi检索示例
     */
    public void nearbyPoiSearch() {
         //创建poi检索实例
        PoiSearch   poiSearch = PoiSearch.newInstance();
        //创建poi监听者
        OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
               @Override
               public void onGetPoiResult(PoiResult result) {
                       //获取POI检索结果
             
                }
                ......
      };
        //设置poi监听者该方法要先于检索方法searchNearby(PoiNearbySearchOption)前调用,否则会在某些场景出现拿不到回调结果的情况
        poiSearch.setOnGetPoiSearchResultListener(poiListener);
        //设置请求参数
        PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption()
            .keyword("餐厅")//检索关键字
            .location(center)//检索位置
            .pageNum(loadIndex)//分页编号,默认是0页
            .pageCapacity(20)//设置每页容量,默认10条
            .radius(radius);//附近检索半径
      //发起请求
      poiSearch.searchNearby(nearbySearchOption);
      //释放检索对象
      poiSearch.destroy();
    }
    
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/poiseach.mp4
  • 路线规划
    简介
    百度地图SDK支持公交、驾车、骑行、步行和跨城公共交通路线规划。
    公交路线规划:根据起、终点,进行公交路线规划;
    驾车线路规划:根据起、终点,不同的策略,进行驾车路线规划,支持设置途经点;
    骑行线路规划:根据起、终点,进行自行车骑行路线规划,支持跨城骑行路线规划;
    步行线路规划:根据起、终点,进行步行路线规划;
    跨城公共交通路线规划:根据起、终点,进行跨城路线规划,支持飞机,火车、大巴、公交等多种出行方案。
    功能展示
    /**
     * 驾车路线规划代码示例
     */
    public void drivingRoute() {
        //创建驾车线路规划检索实例;
        RoutePlanSearch routePlanSearch = RoutePlanSearch.newInstance();
        //创建驾车线路规划检索监听者;
        OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
    
           public void onGetDrivingRouteResult(DrivingRouteResult result) {
                   //获取驾车线路规划结果
            }
             ......
        };
        //设置驾车线路规划检索监听者,该方法要先于检索方法drivingSearch(DrivingRoutePlanOption)前调用,否则会在某些场景出现拿不到回调结果的情况
    
        routePlanSearch.setOnGetRoutePlanResultListener(listener);
        //准备检索起、终点信息;
        PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽");
        PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");
        //发起驾车线路规划检索;
        routePlanSearch.drivingSearch((new DrivingRoutePlanOption())
                .from(stNode)
                .to(enNode));
        //释放检索实例;
        routePlanSearch.destroy();
    }
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/routePlan.mp4
  • 步行导航
    简介
    自v4.4.0起,新增步行导航功能,支持普通步行导航、步行AR导航、偏航纠正等导航功能。
    功能展示
    //设置导航的起终点信息
    LatLng  startPt = new LatLng(40.047416,116.312143);
    LatLng  endPt = new LatLng(40.048424, 116.313513);
    WalkNaviLaunchParam param = new WalkNaviLaunchParam().stPt(startPt).endPt(endPt);
    // 使用步行导航前,需要初始化引擎初。
    WalkNavigateHelper.getInstance().initNaviEngine(this, new IWEngineInitListener() {
       @Override
        public void engineInitSuccess() {
            Log.d(LTAG, "引擎初始化成功");
            routePlanWithParam();
        }
     
        @Override
        public void engineInitFail() {
            Log.d(LTAG, "引擎初始化失败");
        }
    });
    /**
     * 引擎初始化成功之后,发起导航算路。算路成功后,在回调函数中设置跳转至诱导页面。
     * 开始算路
     */
    public void routePlanWithParam() {
        WalkNavigateHelper.getInstance().routePlanWithParams(param, new IWRoutePlanListener() {
            @Override
            public void onRoutePlanStart() {
                Log.d(LTAG, "开始算路");
            }
     
            @Override
            public void onRoutePlanSuccess() {
                Log.d(LTAG, "算路成功,跳转至诱导页面");
                Intent intent = new Intent();
                intent.setClass(BNaviMainActivity.this, WNaviGuideActivity.class);
                startActivity(intent);
            }
     
            @Override
            public void onRoutePlanFail(WalkRoutePlanError error) {
                Log.d(LTAG, "算路失败");
            }
     
        });
    }
    //初始化步行导航过程管理类
    WalkNavigateHelper mNaviHelper = WalkNavigateHelper.getInstance();
    // 在导航页面WNaviGuideActivity.this的onCreate方法中,调用mNaviHelper.onCreate(WNaviGuideActivity.this)创建诱导View。
    View view = mNaviHelper.onCreate(WNaviGuideActivity.this);
    if (view != null) {
        setContentView(view);
    }
    // 开始导航
    mNaviHelper.startWalkNavi(WNaviGuideActivity.this);
    //在步行导航页面对应的acticity的生命周期方法中分别调用WalkNavigateHelper类中的对应生命周期方法。
    @Override
    protected void onResume() {
            super.onResume();
            mNaviHelper.resume();
    }
    @Override
    protected void onPause() {
            super.onPause();
            mNaviHelper.pause();
    }
    @Override
    protected void onDestroy() {
            super.onDestroy();
            mNaviHelper.quit();
    }
    //导航状态信息,主要包括导航开始、结束,导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等
    mNaviHelper.setRouteGuidanceListener(this, new IWRouteGuidanceListener() {
           @Override
           public void onRouteGuideIconUpdate(Drawable icon) {
                      //诱导图标更新 
           }
           @Override
           public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
                      //诱导枚举信息
           }
           @Override
           public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {
                      //诱导信息
           }
          @Override
          public void onRemainDistanceUpdate(CharSequence charSequence) {
                      // 总的剩余距离
           }
          @Override
           public void onRemainTimeUpdate(CharSequence charSequence) {
                     //总的剩余时间
           }
           @Override
           public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
                    //GPS状态发生变化,来自诱导引擎的消息
           }
           @Override
            public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
                    //偏航信息
            } 
           @Override
           public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
                   //偏航规划中的信息
           }
           @Override
           public void onReRouteComplete() {
                  //重新算路成功
           }
           @Override
           public void onArriveDest() {
                    //到达目的地
           }
          @Override
           public void onVibrate() {
                    //震动
           }
       });
    }
    //设置诱导信息回调监听,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务SDK。
    //获取语音播报文本方法(注:该接口需要在startWalkNavi方法之前调用,否则不会有回调):
    mNaviHelper.setTTsPlayer(new IBTTSPlayer() {
        /**
         * 诱导文本回调
         * @param s 诱导文本
         * @param b 是否抢先播报
         * @return
         */
        @Override
        public int playTTSText(String s, boolean b) {
            return 0;
        }
    });
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/WalkingNavi2.mp4
  • 骑行导航
    简介

    自v4.2.0起,新增普通骑行导航功能,支持骑行导航、偏航纠正等全部功能。
    自v4.4.0起,新增电动车骑行导航,同时支持普通自行车骑行导航(简称:普通骑行导航)和电动车骑行导航,默认为普通骑行导航,旧版用户不受影响。

    功能展示
    //通过设置BikeNaviLaunchParam对象中的vehicle的值区分:vehicle :0:普通骑行导航 ; 1:电动车骑行导航,不设置vehicle的值时,默认为0 普通骑行导航。
    startPt = new LatLng(40.047416,116.312143);
    endPt = new LatLng(40.048424, 116.313513);
    param = new BikeNaviLaunchParam().stPt(startPt).endPt(endPt).vehicle(0);
    // 使用骑行导航前,需要初始化骑行导航引擎。
    BikeNavigateHelper.getInstance().initNaviEngine(this, new IBEngineInitListener() {
        @Override
        public void engineInitSuccess() {
            Log.d(LTAG, "引擎初始化成功");
            routePlanWithParam();
        }
    
        @Override
        public void engineInitFail() {
            Log.d(LTAG, "引擎初始化失败");
        }
    });
    /**
     * 算路设置起、终点参数,然后在回调函数中设置跳转至诱导页面
     * 开始算路
     */
    public void routePlanWithParam() {
        param = new BikeNaviLaunchParam().stPt(startPt).endPt(endPt);
        BikeNavigateHelper.getInstance().routePlanWithParams(param, new IBRoutePlanListener() {
            @Override
            public void onRoutePlanStart() {
                Log.d(LTAG, "开始算路");
            }
    
            @Override
            public void onRoutePlanSuccess() {
                Log.d(LTAG, "算路成功,跳转至诱导页面");
                Intent intent = new Intent();
                intent.setClass(BNaviMainActivity.this, BNaviGuideActivity.class);
                startActivity(intent);
            }
    
            @Override
            public void onRoutePlanFail(BikeRoutePlanError error) {
                Log.d(LTAG, "算路失败");
            }
    
        });
    }
    // 获取诱导页面地图展示View
    //创建诱导View,并接收回调事件。在activity生命周期内调用诱导BikeNavigateHelper对应的生命周期函数。
    View view = mNaviHelper.onCreate(BNaviGuideActivity.this);
    
    if (view != null) {
        setContentView(view);
    }
    // 开始导航
    mNaviHelper.startBikeNavi(BNaviGuideActivity.this);
    
    // 设置诱导监听, 主要包括导航开始、结束,导航过程中偏航、偏航结束、诱导信息(包含诱导默认图标、诱导类型、诱导信息、剩余距离、时间、振动回调等。
    mNaviHelper.setRouteGuidanceListener(this, new IBRouteGuidanceListener() {
        @Override
        public void onRouteGuideIconUpdate(Drawable icon) {
        }
    
        @Override
        public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
        }
    
        @Override
        public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {
        }
    
        @Override
        public void onRemainDistanceUpdate(CharSequence charSequence) {
        }
    
        @Override
        public void onRemainTimeUpdate(CharSequence charSequence) {
        }
    
        @Override
        public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
        }
    
        @Override
        public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
        }
    
        @Override
        public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
        }
    
        @Override
        public void onReRouteComplete() {
        }
    
        @Override
        public void onArriveDest() {
        }
    
        @Override
        public void onVibrate() {
        }
    
        @Override
        public void onGetRouteDetailInfo(BikeRouteDetailInfo bikeRouteDetailInfo) {
        }
    });
    //设置诱导信息回调监听,此组件只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务SDK。
    //获取语音播报文本方法(注:该接口需要在startWalkNavi方法之前调用,否则不会有回调):
    mNaviHelper.setTTsPlayer(new IBTTSPlayer() {
        /**
         * 诱导文本回调
         * @param s 诱导文本
         * @param b 是否抢先播报
         * @return
         */
        @Override
        public int playTTSText(String s, boolean b) {
            return 0;
        }
    });
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/map/video/BikingNavi.mp4
用户须知

百度Android SDK提供的所有服务是免费的,您需申请密钥(AK)后,才可使用百度地图Android SDK。任何非营利性产品请直接使用,商业目的产品使用前请参考使用须知。在您使用百度地图Android SDK之前,请先阅读百度地图API使用条款
为提升开发者接入体验,地图SDK对文档内容进行了优化升级,优化后的新版文档将在12.21日之后陆续上线,如开发者希望继续查看旧版本文档,请于12.21之前对内容进行本地保存,如有其他问题,欢迎通过反馈平台与我们取得联系。

开始使用