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

重要:为进一步采取加强对最终用户个人信息的安全保护措施,从地图SDK v7.5.0版本起,请开发者务必确保调用SDK任何接口前先调用隐私合规接口setAgreePrivacy,否则可能会无法正常使用相关功能。具体可参考开发指南-开发注意事项-隐私合规接口说明

产品简介
Android地图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();
}
}
室内地图
简介
自百度地图SDK V4.0版本起,室内图功能正式上线,辅助开发者实现全新的地理位置服务体验,室内地图与百度地图App同步更新。
支持的公众建筑包含购物商场、机场和火车站等交通枢纽、医院等。覆盖全国4000+个大型购物中心。
功能展示
@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
境外地图
简介
百度地图SDK支持境外地图的展示能力,包含全球200多个国家和地区详细道路、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();
}
}
地图覆盖物
简介
百度地图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();
}
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();
}
路线规划
简介
百度地图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));
步行导航
简介
自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;
}
});
骑行导航
简介
自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;
}
});
用户须知
在您使用百度Android地图SDK之前,请先阅读并同意百度地图开放平台服务条款中的各项内容,并申请申请密钥(AK)才可使用。
您在使用中遇到任何问题,都可以通过反馈平台反馈给我们,之后会有技术支持人员一对一为您处理问题。
免费说明
目前百度地图Android地图SDK境内服务对非商业目的使用的开发者不收取任何费用,开发者可自行放心下载使用。
如您以商业目的(包括但不限于对第三方用户收费、项目投标,以及其他直接或间接获取收益或利益)使用本平台服务,则用户须要事先获得本平台"商用授权"许可。 平台商用授权的授权对象为公司主体。授权成功后,您将会收到平台提供的书面版商用授权书(附带百度公司签章)。
商用授权可点击这里了解详情。商业目的产品使用前请参考使用须知

下一篇

获取密钥

本篇文章对您是否有帮助?