地图的开发主要是参考官方文件,当然开发前,要注册帐号,且创建应用。
http://lbsyun.baidu.com/apiconsole/key
常见问题
POI 出现 permission_unfinished
原因:我们在官方网站,创建应用的时候,SHA1码,两个都要写上,发布版是必填的,开发版我没有填写,所有出不来数据。
- POI 检索
注意:POI的初始化不要放到onCreate方法里,否则没有效果
1.登录帐号且创建应用
如果没有百度地图开发者帐号,需要申请。然后登陆后,找到控制台,创建一个应用,获取SHA-1串号,最终获取appkey
1.1创建应用
找到应用管理
1.2 SHA1码 发布版和开发版
发布版和开发版,这两个建议都填写上,因为平时是使用开发版,到上线的使用发布版。
可以参考:http://lbsyun.baidu.com/index.php?title=FAQ/SHA1
1.2.1通过androidstudio 命令获取SHA1:
- Androidstudio顶部菜单栏 view
- 找到Terminal ,然后输入以下命令
- keytool -list -v -keystore
xxxxxxxx\.android\debug.keystore
-alias androiddebugkey - 其中
xxxxxxxx\.android\debug.keystore
是自己的studio默认签名。如:C:\Users\chen.android\debug.keystore - 输入以后会提示输入密码:默认密码是android
最后如下:
最后提交:记录appkey。
1.2.2 通过androidstudio gradle 获取SHA1:
右上角有个Gradle菜单栏,点击打开菜单,找到自己的项目如testmap,找到signingReport,双击执行。就会生成SHA1.这是最快捷的方式。
2.下载sdk和案例
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio
2.1配置androidstudio的项目:
1.下载开发包
2.将开发包拷贝至工程 找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下
3.配置android
sourceSets {
main {
jniLibs.srcDir ‘libs’
}
}
4.工程中添加jar文件
5.资源说明 BaiduMapsApiASDemo/app/src/main/assets/ 拷贝到自己的项目
参考:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio
2.2 显示地图
参考:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
- 配置appkey
- 配置权限 动态权限(Grantor)
- 配置App
- 显示地图
2.3 BaiduMapOptions
BaiduMapOptions类支持设置的状态如下:
状态 | 含义 |
---|---|
map | Status 地图状态 |
compassEnable | 是否开启指南针,默认开启 |
mapType | 地图模式,默认为普通地图 |
rotateGesturesEnabled | 是否允许地图旋转手势,默认允许 |
scrollGesturesEnabled | 是否允许拖拽手势,默认允许 |
overlookingGesturesEnabled | 是否允许俯视图手势,默认允许 |
zoomControlsEnabled | 是否显示缩放按钮控件,默认允许 |
zoomControlsPosition | 设置缩放控件位置 |
zoomGesturesEnabled | 是否允许缩放手势,默认允许 |
scaleControlEnabled | 是否显示比例尺控件,默认显示 |
scaleControlPosition | 设置比例尺控件位置 |
logoPosition | 设置Logo位置 |
使用:
BaiduMapOptions options = new BaiduMapOptions();
//设置地图模式为卫星地图
options.mapType(BaiduMap.MAP_TYPE_SATELLITE);
MapView mapView = new MapView(this, options);
setContentView(mapView);
3.显示定位-获取当前位置
设置定位动态跟随
mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING,false,null));
4.覆盖物
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/render-map/point
5.POI检索
注意:POI的初始化不要放到onCreate方法里,否则没有效果
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/search/poi
6.路径规划
注:自V3.6.0起,原内置覆盖物(Overlay)相关代码开源,SDK中不再集成,下载使用。 覆盖物开源代码中提供了一些基于基础覆盖物而组合而成的高级覆盖物,包括用于显示poi数据,规划路线,公交详情路线的覆盖物。
IndoorRouteOverlay
/TransitRouteOverlay
/WalkingRouteOverlay
/BikingRouteOverlay
/DrivingRouteOverlay
/MassTransitRouteOverlay
/ 以上源码在BaiduMapApiASDemo工程(AndroidStudio开发环境)com.baidu.mapapi.ovelayutil包下。 在进行路线规划Overlay绘制时根据开发环境选择开源工程添加至项目中使用。
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/route/walk
private void initRoutePlan() {
mSearch = RoutePlanSearch.newInstance();
mSearch.setOnGetRoutePlanResultListener(onGetRoutePlanResultListener);
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "西二旗地铁站");
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "百度科技园");
mSearch.walkingSearch((new WalkingRoutePlanOption())
.from(stNode)
.to(enNode));
}
OnGetRoutePlanResultListener onGetRoutePlanResultListener = new OnGetRoutePlanResultListener() {
@Override
public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
//创建WalkingRouteOverlay实例
if (walkingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
WalkingRouteOverlay overlay = new WalkingRouteOverlay(mBaiduMap);
if (walkingRouteResult.getRouteLines() != null && walkingRouteResult.getRouteLines().size() > 0) {
//获取路径规划数据,(以返回的第一条数据为例)
//为WalkingRouteOverlay实例设置路径数据
overlay.setData(walkingRouteResult.getRouteLines().get(0));
//在地图上绘制WalkingRouteOverlay
overlay.addToMap();
}
}
}
...
};