1、使用须知
在您接受使用条款约束的情况下,百度地图移动端SDK在您的移动应用中开放显示百度地图底图、进行地点搜索、路线查询和路况显示等功能。
您只可使用在百度地图移动端SDK文档中所列明开放的SDK功能来对SDK相关服务数据的结果进行展示,不得直接存取、使用内部数据、图片、程序、模块或是任何其他百度地图的服务或功能。在接受使用条款约束的情况下,您可以在向最终用户提供其他信息的同时,使用SDK接口获得相关服务数据。
在您使用上述服务时,请严格遵循“百度地图开发者服务条款”,一般情况下,非商业目的使用的用户可以直接使用百度地图开放平台对外的开放服务。 但如果用户以商业目的(包括但不限于对第三方用户收费、项目投标,以及其他直接或间接获取收益或利益)使用本平台服务,则用户须要事先获得本平台"商用授权"许可。需要说明的是如未获得授权,百度地图开放平台也不会随意终止或干扰您的正常使用。 如需要商用授权,可按照官网流程进行申请,“申请入口”。
(1) 百度地图SDK在国内(包括港澳台),输入、输出默认使用BD09坐标;定位SDK默认输出是使用GCJ02坐标。 自iOS v3.3起,支持一次声明为GCJ02坐标类型,全应用支持输入GCJ02坐标,返回GCJ02坐标。
(2) 海外地区,输入为WGS84坐标。
三种坐标系说明如下:
(1)WGS84:表示GPS获取的坐标;
(2)GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
(3)BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标;
百度地图SDK在国内(包括港澳台)使用的是BD09坐标;在海外地区,统一使用WGS84坐标。开发者在使用百度地图相关服务时,请注意选择。
百度地图开放平台提供了官方的坐标转换接口,请开发者直接选择使用。开发者切勿从非官方渠道获得坐标转换方法。各平台坐标转换方法如下:
(1)Android地图SDK:http://lbsyun.baidu.com/index.php?title=androidsdk
(2)iOS地图SDK:http://lbsyun.baidu.com/index.php?title=iossdk
(3)Web API服务:http://lbsyun.baidu.com/index.php?title=webapi
可能有几个原因:
(1)、jar中包含assets资源,如果脚本编译没有把这个资源打包进去,导致无法获取地图渲染必须的资源,因此白屏,通常用IDE生成apk没有问题,因为会自动merge工程的assets和jar中的asset,所以请解压apk,查看asset目录下是否有地图必须的cfg目录等资源。
(2)、混淆问题,二次混淆没有keep百度相关类导致消息等类被混淆,无法正常绘制
可能有几个原因:
(1)、ak错误,通常debug和release包的签名不同,请保证签名+包名与申请key时使用的一致,可以参考logcat中是否有认证错误的日志。
ak错误是最常见的情况,由于ak配置与打包apk时用的签名是一一对应的,所以打包环境变更(包括更换签名,切换开发环境,degug/release模式切换等),都会导致ak验证不通过, ak认证问题追查步骤如下:
1.1 在Logcat中查看Tag为auth info的log , 查看其中ak , mcode 与您在ak配置页面所配置的是否一致,如果不一致则说明是ak配置错误。
1.2 查看LogCat 中有没有 "Authentication Error" 字样的Log, 如果有,请反馈此Log.
1.3 GeneralListener 的 onGetPermissionResult(int state) 有没有回调? state 值是多少?非0值表示ak错误
(2)、混淆问题,二次混淆没有keep百度相关类导致消息等类被混淆,无法正常绘制。
(3)、SD卡不可能用或没有读写权限,导致无法正常处理数据混存,请保证SD卡可用并有权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE”>; (允许sd卡写权限,需写入地图数据,禁用后无法显示地图)
目前支持基础地图(默认为3D效果)、卫星图、热力图、实时路况。可参考BaiduMap类进选择关闭。
// 设置是否显示比例尺控件 public void showScaleControl(boolean show)
覆盖物相关
// 设置是否显示缩放控件 public void showZoomControls(boolean show)
目前地图支持overlay继承类以及marker标注覆盖物,通过overlay继承类实现Arc、Circle、 Dot、Polyline、Polygon、Text等覆盖物的绘制,可实现自定义颜色、线宽等。Marker标注覆盖物 可实现自定义样式。
地图中删除指定overlay通过overlayoptions获得overlay对象,remove方法删除。也可通过 baidumap的clear全部清除。
MapStatus中target为地图中心点坐标、bound为显示区域。
不能跨线程操作,请在主线程操作
基础地图和上面的各种覆盖物元素,具有一定的层级压盖关系,具体如下(从上至下的顺序):
(1).自定义View(MapView.addView(View););
(2).弹出窗图层(InfoWindow);
(3).定位图层(BaiduMap.setMyLocationEnabled(true););
(4).指南针图层(当地图发生旋转和视角变化时,默认出现在左上角的指南针);
(5).标注图层(Marker),文字绘制图层(Text);
(6).几何图形图层(点、折线、弧线、圆、多边形);
(7).底图标注(指的是底图上面自带的那些POI元素);
(8).百度城市热力图(BaiduMap.setBaiduHeatMapEnabled(true););
(9).实时路况图图层(BaiduMap.setTrafficEnabled(true););
(10).热力图图层(HeatMap);
(11).地形图图层(GroundOverlay);
(12).瓦片图层(TileOverlay);
(13).基础底图(包括底图、底图道路、卫星图、室内图等);
level: 距离(米) 22: 2;
21: 5;
20: 10;
19: 20;
18: 50;
17: 100;
16: 200;
15: 500;
14: 1000;
13: 2000;
12: 5000;
11: 10000;
10: 20000;
9: 25000;
8: 50000;
7: 100000;
6: 200000;
5: 500000;
4: 1000000;
3: 2000000;
百度地图SDK采用的是百度自行加密的BD09ll坐标系。