在您接受使用条款约束的情况下,百度地图移动端SDK在您的移动应用中开放显示百度地图底图、进行地点搜索、路线查询和路况显示等功能。
您只可使用在百度地图移动端SDK文档中所列明开放的SDK功能来对SDK相关服务数据的结果进行展示,不得直接存取、使用内部数据、图片、程序、模块或是任何其他百度地图的服务或功能。在接受使用条款约束的情况下,您可以在向最终用户提供其他信息的同时,使用SDK接口获得相关服务数据。
在您使用上述服务时,请严格遵循“百度地图开发者服务条款”,如您满足以下使用场景“2.5 本服务面向您网站或应用是免费的,但如您就本服务进行商业使用或以其他方式直接或间接获得收益”,则需要事先获得百度的书面许可。需要说明的是如未获得授权,百度地图开放平台也不会随意终止或干扰您的正常使用。 如需要商用授权,可按照官网流程进行申请,“申请入口”。
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/guide/tool/coordinate
(2)iOS地图SDK:http://lbsyun.baidu.com/index.php?title=iossdk/guide/tool/coordinate
(3)Web API服务:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
确保debug、release不同模式下,打包时的key中sha1值与注册时是否一致。app发起鉴权请求的 安全码可通过auth info过滤debug日志查看。
keytool -list -v -keystore your_keystore。
因系统时间不正确时,key校验会不通过,请使用当前时间。
加载so失败导致找不到native方法实现
加载so失败首先确定so与jar是否是同一组合包,并检查存放位置(参考官方demo)以及存放的so与机器的CPU类型对应, 目前地图SDK支持的CPU有 armeabi、arm64-v8a、armeabi-v7a、x86、x86_64。
gradle中通过指定:jniLibs.srcDir 'libs',确保能正确获取libs中jar及so。
参考MyLocationData,可对定位精度、方向、定位点的经纬、定位图层的显示方式、定位图标等进行设置,具体方式可参考官方demo。
定位相关的Bug反馈、相关问题的咨询请移至定位版块进行。
可能有几个原因: 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) 在Logcat中查看Tag为auth info的log , 查看其中ak , mcode 与您在ak配置页面所配置的是否一致,如果不一致则说明是ak配置错误。
(2) 查看LogCat 中有没有 "Authentication Error" 字样的Log, 如果有,请反馈此Log.
(3) 注册监听广播SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR
获取附加信息SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_MESSAGE
和SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE
其中错误码:
601:未鉴权;
200:APP不存在,根据请求的AK,找不到对应的APP;
202:APP被管理员删除;
252:用户被管理员删除;
230:MCode与AK不匹配,请检查AK中的SHA1值和包名是否正确;
-11:Https网络不可用,请检查Https网络是否访问或者请关闭代理。
2)混淆问题,二次混淆没有keep百度相关类导致消息等类被混淆,无法正常绘制。
3)SD卡不可能用或没有读写权限,导致无法正常处理数据混存,请保证SD卡可用并有权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> (允许sd卡写权限,需写入地图数据,禁用后无法显示地图)
基础地图和上面的各种覆盖物元素,具有一定的层级压盖关系,具体如下(从上至下的顺序):
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;
目前支持基础地图(默认为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为显示区域。
不能跨线程操作,请在主线程操作
Projection的fromScreenLocation实现屏幕坐标转地理坐标;
toScreenLocation方法实现地理坐标转屏幕坐标。
检查坐标的经纬度是否写反、坐标类型的正确性,坐标类型及相互转换关系参考
计算两点间距离可参考DistanceUtil工具类
通常是没有调用SDKInitializer.initialize(getApplicationContext())导致
检查检索回调中Result的ERROR值,各状态码参考 com.baidu.mapapi.search.core.SearchResult.ERRORNO,包括网络问题、鉴权未通过等原因。
所有Search对象,需一次检索完成再发起新的检索,如需同时发起多次检索,可new多个Search对象。
设置经纬度范围,并根据经纬度范围更新地图的缩放级别
//构造经纬度范围LatLngBounds
LatLngBounds.Builder builder = new LatLngBounds.Builder();
//更新地图的状态
mBaiduMap.setMapStatus(MapStatusUpdateFactory
.newLatLngBounds(builder.build()));
PoiOverlay容量为10,可自行通过Marker绘制来显示。
android 类参考类 ReverseGeoCodeResult java.util.List<PoiInfo> getPoiList() 位置附近的POI信息
Marker支持自定义样式绘制,绘制多个Marker点可参考点聚合功能。
InfoWindow支持View设置自定义样式,yOffset可设置y轴偏移量,并且不⽀支持多个InfoWindow同时显示,可使用Marker替代。
InfoWindow构造时,拖动时用图片绘制,在停止时使用view。
OverlayManager里有个zoomToSpan方法,该方法只对Marker类形的overlay有效.
自V3.6.0起,原内置覆盖物相关类代码开源(OverlayManager/PoiOverlay/TransitRouteOverlay/WalkingRouteOverlay/BusLineOverlay),源码可在BaiduMapsApiDemo工程中找到。
V3.6.0起,原内置覆盖物相关类代码开源(OverlayManager/PoiOverlay/TransitRouteOverlay/WalkingRouteOverlay/BusLineOverlay),源码可在BaiduMapsApiDemo工程中找到。
下载【示例代码】,源码位置如下:
(1)合一包中,源码在放在 示例代码 中,源码路径为:BaiduMap_AndroidMapSDK_v4.X.X_Sample\BaiduMapsApiDemo\src\com\baidu\mapapi
Projection类里有fromScreenLocation方法,可以把屏幕坐标转换为经纬度
还是没有解决您的问题?请创建问题吧!