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

WebAPI文档全面上新

新增示例代码、在线运行等功能,帮助您实现快速接入,前往体验吧!

体验新版
更新时间:2023-04-10
坐标系说明

Android定位SDK产品,支持全球定位,能够精准的获取经纬度信息。根据开发者的设置,在国内获得的坐标系类型可以是:国测局坐标、百度墨卡托坐标 和 百度经纬度坐标。在海外地区,只能获得WGS84坐标。请开发者在使用过程中注意坐标选择。定位SDK默认输出GCJ02坐标,地图SDK默认输出BD09ll坐标。

显示定位

通过如下几步您便可以在自己的地图中展示当前所在位置的定位点。

1确保您的开发包中包含基本定位功能,该选项在您下载开发包时默认不会被选中,点击下载开发包

6.png

2配置AndroidManifest.xml文件

1.加入如下权限使用声明

<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

2.在Application标签中声明定位的service组件

<service android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote"/>
3开启地图的定位图层
mBaiduMap.setMyLocationEnabled(true);
4构造地图数据
我们通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView。
public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            //mapView 销毁后不在处理新接收的位置
            if (location == null || mMapView == null){
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(location.getDirection()).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
    }
}
5通过LocationClient发起定位
//定位初始化
mLocationClient = new LocationClient(this);

//通过LocationClientOption设置LocationClient相关参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);

//设置locationClientOption
mLocationClient.setLocOption(option);

//注册LocationListener监听器
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
mLocationClient.start();
6正确管理各部分的生命周期
@Override
protected void onResume() {
    mMapView.onResume();
    super.onResume();
}

@Override
protected void onPause() {
    mMapView.onPause();
    super.onPause();
}

@Override
protected void onDestroy() {
    mLocationClient.stop();
    mBaiduMap.setMyLocationEnabled(false);
    mMapView.onDestroy();
    mMapView = null;
    super.onDestroy();
}
7完成以上工作,即可在您的地图应用中显示当前位置的蓝点,如下图:

Screenshot_20200610_102925_baidumapsdk.demo.jpg

上图为18级缩放下的显示效果。
自定义内容

通过MyLocationConfiguration类来构造包括定位的属性,定位模式、是否开启方向、设置自定义定位图标、精度圈填充颜色以及精度圈边框颜色5个属性。

MyLocationConfiguration(LocationMode mode,
                        boolean enableDirection,
                        BitmapDescriptor customMarker,
                        int accuracyCircleFillColor,
                        int accuracyCircleStrokeColor)	

上述代码中五个参数详细介绍如下:
定位模式 地图SDK支持三种定位模式:NORMAL(普通态), FOLLOWING(跟随态), COMPASS(罗盘态)

mCurrentMode = LocationMode.FOLLOWING;//定位跟随态
mCurrentMode = LocationMode.NORMAL;   //默认为 LocationMode.NORMAL 普通态
mCurrentMode = LocationMode.COMPASS;  //定位罗盘态

自定义定位图标 支持自定义定位图标样式,替换定位icon

mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);

自定义精度圈填充颜色

//自定义精度圈填充颜色
accuracyCircleFillColor = 0xAAFFFF88;

自定义精度圈边框颜色

//自定义精度圈边框颜色
accuracyCircleStrokeColor = 0xAA00FF00;

在定义了以上属性之后,通过如下方法来设置生效:

mBaiduMap.setMyLocationConfiguration(mLocationConfiguration)
显示效果如图:

Screenshot_20200612_153217_baidumapsdk.demo.jpg


上图为21级缩放下的显示效果。
另外有两个属性不可以通过上述方法设置,说明如下:
定位精度圈大小
定位精度圈大小 ,是根据当前定位精度自动控制的,无法手动控制大小。精度圈越小,代表当前定位精度越高;反之圈越大,代表当前定位精度越低。
定位指针方向
定位指针朝向,是通过获取手机系统陀螺仪数据,控制定位指针的方向,需要开发者自己实现,并不在地图实现范畴。
定位的频次自定义

开发者可以自行设置获取定位的时间间隔,详细的设置方法可以参考定位SDK

自定义图标

自v7.5.7版本起,定位图标支持自定义功能。分别支持对定位中心图片和定位箭头的自定义,同时中心图片新增对gif图的支持 对应新增接口如下:

/**
 * 构造者模式
 * 构造自定义图标
 * @param locationMode
*             定位图层显示方式, 默认为 LocationMode.NORMAL 普通态
 * @param enableArrow
*             定位图标样式,true代表箭头模式,false代表整体模式
 */
public Builder(LocationMode locationMode,boolean enableArrow)

自定义定位图标 所需配置代码如下:

/**
 * 设置自定义中心图片
 * @param customMarker 中心图片
 * 所有传入的图片均会以图片的短边为直径裁剪成中心圆                          
 * @return
*/
public Builder setCustomMarker(BitmapDescriptor customMarker)

/**
 * 设置自定义中心图片的大小 0.2~3倍,默认为直径30的圆形图
 * 同时适用gif图
 * @param markerSize 倍数
 * @return
*/
public Builder setMarkerSize(float markerSize)

// 自定义定位箭头
public Builder setArrow(BitmapDescriptor arrow)

/**
 * 设置箭头图标的大小 0.2~3倍 默认原始图片大小
 * @param arrowSize 倍数
 * @return
*/
public Builder setArrowSize(float arrowSize)

/**
 * 设置中心图片是否可以做呼吸动画
 * 非箭头模式下false
 * @param isNeedAnimation
* @return
*/
public Builder setAnimation(boolean isNeedAnimation)

效果如下:

整体模式:
https://mapopen-pub-androidsdk.cdn.bcebos.com/map/7_5_7/location_1.mp4
箭头模式(中心图片附带呼吸效果):
https://mapopen-pub-androidsdk.cdn.bcebos.com/map/7_5_7/location_2.mp4

自定义gif定位图标 所需配置代码如下:

/**
 * 设置自定义中心gif图
 * @param gifPath gif图片的路径 内部处理gif图
 * 所有传入的图片均会以图片的短边为直径裁剪成中心圆                      
 * @return
*/
public Builder setGifMarker(String  gifPath)

效果如下:

整体模式:
https://mapopen-pub-androidsdk.cdn.bcebos.com/map/7_5_7/location_3.mp4
箭头模式(中心图片带呼吸效果):
https://mapopen-pub-androidsdk.cdn.bcebos.com/map/7_5_7/location_4.mp4
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消