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

Android 地图SDK

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

使用须知

在使用百度地图SDK(Android版)之前,请仔细阅读使用条款,一旦您使用了百度地图SDK(Android版),即表明您已阅读并接受使用条款中的全部内容。百度地图SDK(Android版)可帮助您在应用中以丰富的形式展示地图,实现兴趣点搜索、线路规划等操作。 您只可使用在百度地图SDK(Android版)开发文档中所列明开放的功能来对相关服务数据的结果进行展示,不得直接存取、使用内部数据、图片、程序、模块或是任何其他百度地图的服务或功能。在接受使用条款约束的情况下,您可以在向最终用户提供其他信息的同时,使用 API 获取相关服务数据。

百度用和开发密钥

如何注册百度用户?

公众用户请在百度个人中心注册用户。企业用户请联系我们

如何申请百度密钥?

公众用户在获取密钥中自行申请,可以每个应用申请一个Key,可以用在不同移动平台上的相同应用中。申请的Key个数目前没有限制。企业用户请联系我们

注意:为了给用户提供更安全的服务,Android SDK自v2.1.3版本开始采用了全新的Key验证体系。因此,当您选择使用v2.1.3及之后版本的SDK时,需要到新的Key申请页面进行全新Key的申请,申请及配置流程请参考开发指南对应章节。(选择使用v2.1.2及之前版本SDK的开发者,申请密钥(Key)的方式不变)。

忘记申请过的开发密钥怎么办?

公众用户在获取密钥侧边栏中,点击“我的KEY”查看已申请过的Key和对应的应用名称(针对老版的Key)。

针对申请了新Key的用户,您需要到新的申请页面查看您之前所申请的Key,地址为:http://lbsyun.baidu.com/apiconsole/key

问题集锦

地图和覆盖物相关

百度地图SDK支持三维效果的地图吗?

自2.0.0版本起,Android地图SDK支持矢量版地图,当地图放大到一定级别后,底图的显示将支持3D效果(该效果可通过相应的接口关闭)。


目前支持多少种类型的地图?

目前支持基础矢量地图和卫星地图,此外还支持实时路况地图。


地图无法正常显示

地图无法正常显示,一般从以下几面去追查问题:

检查网络情况是否可用;

检查开发密钥安全码配置、填写位置等是否正确;

调用相应的监听方法,查看是否有错误信息;


点击地图上的一点,如何获取相应的地理坐标?

mBaiduMap.setOnMapClickListener(new OnMapClickListener() {  
    public void onMapClick(LatLng point) {  
        //在此处理点击事件  
    }  
    public boolean onMapPoiClick(MapPoi poi) {  
        //在此处理底图标注点击事件  
        return false;  
    }  
});


地图控件放在TabHost中,如何解决跳转时相互影响问题?

在TabHost中的activity使用MapView,有从其他tab页切回MapView异常的问题解决方案是在使用MapView的activity的onResume/onPause方法中手动调用设置view是否可见,具体如下:

@Override  
protected void OnPause(){  
    mMapView.setVisibility(View.INVISIBLE);  
    mMapView.onPause();  
    super.onPause();  
}

进入页面时

@Override  
protected void onResume(){  
        mMapView.setVisibility(View.VISIBLE);  
        mMapView.onResume();  
        super.onResume();  
}


目前有哪些城市具有实时交通图?

目前已有31个城市开通,分别为南京,广州,重庆,东莞,长春,台州,福州,金华,北京,常州,杭州,温州,大连,南昌,宁波,沈阳,中山,珠海,佛山,泉州,石家庄,成都,青岛,深圳,武汉,乌鲁木齐,长沙,上海,天津,无锡,厦门。之后其他城市还会陆续开通

检索功能相关

如何获得驾车/步行/公交路线距离?

//获取线路规划的第一条方案的线路距离  
drivingRouteResult. getRouteLines().get(0).getDistance();

POI查询结果每页显示几个,如何翻页?

//每页默认显示10个  
// mPoiSearch为PoiSearch对象  
mPoiSearch.searchInCity((new PoiCitySearchOption())  
    .city(“北京”)  
    .keyword(“美食”)  
    // pageNum为你想要跳转到的页码  
    .pageNum(pageNum));

如何设置POI检索每页显示容量?

// 检索时指定页容量为20    
// mPoiSearch为PoiSearch对象  
mPoiSearch.searchInCity((new PoiCitySearchOption())  
    .city(“北京”)  
    .keyword(“美食”)  
    .pageCapacity(20));

路线规划不支持模糊搜索?

目前不支持模糊搜索,需要输入准确的站名。


搜索结果标注如何自定义点击处理?

private class MyPoiOverlay extends PoiOverlay {  
 
        public MyPoiOverlay(BaiduMap baiduMap) {  
            super(baiduMap);  
        }  
 
        @Override  
        public boolean onPoiClick(int index) {  
            super.onPoiClick(index);  
            // 自定义处理poi点击  
            PoiInfo poi = getPoiResult().getAllPoi().get(index);  
            if (poi.hasCaterDetails) {  
                mPoiSearch.searchPoiDetail((new PoiDetailSearchOption())  
                    .poiUid(poi.uid));  
            }  
            return true;  
        }  
}

POI是否支持按分类检索?

支持分类检索,只要在检索的关键词内填写相应的类别名称即可。

LBS云检索相关

什么是LBS云检索

百度地图LBS云是百度地图针对LBS开发者全新推出的平台级服务,不仅适用PC应用开发,同时适用移动设备应用的开发。使用LBS云,可以实现移动开发者存储海量位置数据的服务器零成本及维护压力,且支持高效检索用户数据,且实现地图展现。

空间分析工具相关

坐标相关问题

百度地图SDK采用的是百度自行加密的BD09ll坐标系,因此如果使用原始GPS坐标在地图上进行标绘等操作时,会存在较大的误差。在空间分析工具模块中,我们提供了相应的坐标转换方法,具体使用请参考开发指南、类参考等文档信息。


如何计算两点之间距离?

/** 
* 测距工具 
*/  
public class DistanceUtil {  
     /** 
     * 返回两个点之间的距离 
     * @param p1LL 
     *            起点的百度经纬度坐标 
     * @param p2LL 
     *            终点的百度经纬度坐标 
     * @return 两点距离,单位为: 米,转换错误时返回-1. 
     */  
public static double getDistance(LatLng p1LL, LatLng p2LL) {  
    }  
}

定位相关

获取位置信息

百度地图SDK自v2.0.0版本起,将定位功能进行了分类,因此,开发者如果需要使用定位功能的话,请下载定位SDK来获取相应的位置信息


在地图上使用定位信息

百度地图SDK提供相应的位置信息接收接口,帮助开发者快速展示位置信息,使用方法如下:

第一步:开启定位

// 地图初始化  
mMapView = (MapView) findViewById(R.id.bmapView);  
mBaiduMap = mMapView.getMap();  
// 开启定位图层  
mBaiduMap.setMyLocationEnabled(true);  
// 定位初始化  
mLocClient = new LocationClient(this);  
mLocClient.registerLocationListener(myListener);  
LocationClientOption option = new LocationClientOption();  
option.setOpenGps(true);// 打开gps  
option.setCoorType("bd09ll"); // 设置坐标类型  
option.setScanSpan(1000);  
mLocClient.setLocOption(option);  
mLocClient.start();

第二步:定位数据展示

/** 
* 定位SDK监听函数 
*/  
public class MyLocationListenner implements BDLocationListener {  
 
    @Override  
    public void onReceiveLocation(BDLocation location) {  
        // map view 销毁后不在处理新接收的位置  
        if (location == null || mMapView == null)  
            return;  
        MyLocationData locData = new MyLocationData.Builder()  
                .accuracy(location.getRadius())  
                // 此处设置开发者获取到的方向信息,顺时针0-360  
                .direction(100).latitude(location.getLatitude())  
                .longitude(location.getLongitude()).build();  
        mBaiduMap.setMyLocationData(locData);  
        if (isFirstLoc) {  
            isFirstLoc = false;  
            LatLng ll = new LatLng(location.getLatitude(),  
                    location.getLongitude());  
            MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);  
            mBaiduMap.animateMapStatus(u);  
        }  
    }  
 
    public void onReceivePoi(BDLocation poiLocation) {  
    }  
}

其他

Key的申请和应用名称有关系吗?

应用名称是在申请Key的时候由开发者自行填写的,后期不可更改。因此key和应用名称是一一对应的关系。但在使用上,开发者所申请的key和安全码(sha1;PCN)绑定,只要保证应用的sha1和PCN对应关系正确即可


为何我的程序在不混淆之前可以运行,混淆之后不能运行了?

矢量版SDK(即2.0.0及之后的版本):

如果是用proguard ,以下配置供参考:

  1. -libraryjars libs/baidumapapi_v2_1_2.jar 替换成自己所用版本的jar包

-keep class com.baidu.** { *; }

-keep class vi.com.gdi.bgl.android.**{*;}

其他混淆工具也请进行与此类似的配置,指定对mapapi中的类和方法不进行混淆


如何解决adt 22 版本不兼容低版本project问题?

第一步,在eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态。

第二步,Project -> clean -> clean all 。


使用VersionInfo.getVersionDesc()方法获取组件化开发包的描述信息

1.背景:

SDK在可定制化后, 各种组合打成的开发包其包名都是一样的, 所以在可定制化版本中,SDK新增了一个方法来或取 SDK开发包的版本描述信息,SDK开发包版本描述信息是一个简短的字串,它用来说明当前使用的SDK的版本的版本号,功能描述等信息。

2.方法:

VersionInfo.getVersionDesc()

3. 返回值类型:

String

4. 返回值示例:

baidu_mapsdk_andr_2.3.0_com=map_search_util_so=c8c720ccb0cd02def054cc57af50b829

5. 说明:

baidu_mapsdk_andr:固定字符.

2.3.0:版本号

com=map_search_util:开发包功能说明,此开发包包含地图功能、检索功能和工具类

so=c8c720ccb0cd02def054cc57af50b829:该jar包所需的so文件对应的md5值,用于检验jar包与so对应关系是否正确