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

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
 
第1行: 第1行:
 
<div class="md-container">
 
<div class="md-container">
        <div class="md-atomic">
+
  <div class="md-atomic">
            <div class="md-vertical-code-tab">
+
      <div class="md-vertical-code-tab">
                <ul class="tabs-collapse">
+
          <ul class="tabs-collapse">
                    <li class="infor"><span>基础定位</span>
+
              <li class="infor"><span>基础定位</span>
                        <div class="code-wrap">
+
                  <div class="code-wrap">
                            <div class="code-left">
+
                      <div class="code-left">
                            <div class="code-title">简介</div>
+
                      <div class="code-title">简介</div>
                            <div class="code-content"  id="dcon">定位SDK的核心能力就是帮助开发者快速、精准的获取用户定位。开发者只需按照如下流程操作,即可获取用户当前经纬度。
+
                      <div class="code-content"  id="dcon">定位SDK的核心能力就是帮助开发者快速、精准的获取用户定位。开发者只需按照如下流程操作,即可获取用户当前经纬度。
 
</div>
 
</div>
                            <div class="code-show">功能展示</div>
+
                      <div class="code-show">功能展示</div>
                            <div class="the-prettyprint">
+
                      <div class="the-prettyprint">
                              <div class="copy-btn-left" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12301">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
+
                        <div class="copy-btn-left" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12301">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
                              <pre class="prettyprint" id="code_d12301">
+
                        <pre class="prettyprint" id="code_d12301">
 
/**
 
/**
* 初始化定位参数配置
+
* 初始化定位参数配置
*/
+
*/
  
 
private void initLocationOption() {
 
private void initLocationOption() {
 
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
 
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
LocationClient locationClient = new LocationClient(getApplicationContext());
+
LocationClient locationClient = new LocationClient(getApplicationContext());
 
//声明LocationClient类实例并配置定位参数
 
//声明LocationClient类实例并配置定位参数
 
LocationClientOption locationOption = new LocationClientOption();
 
LocationClientOption locationOption = new LocationClientOption();
第48行: 第48行:
 
locationOption.SetIgnoreCacheException(false);  
 
locationOption.SetIgnoreCacheException(false);  
 
//可选,默认false,设置是否开启卫星定位
 
//可选,默认false,设置是否开启卫星定位
locationOption.setOpenGps(true);  
+
locationOption.setOpenGnss(true);  
 
//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
 
//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
 
locationOption.setIsNeedAltitude(false);
 
locationOption.setIsNeedAltitude(false);
第61行: 第61行:
 
}
 
}
 
/**
 
/**
* 实现定位回调
+
* 实现定位回调
*/
+
*/
 
public class MyLocationListener extends BDAbstractLocationListener{
 
public class MyLocationListener extends BDAbstractLocationListener{
    @Override
+
@Override
    public void onReceiveLocation(BDLocation location){
+
public void onReceiveLocation(BDLocation location){
        //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
+
  //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
        //以下只列举部分获取经纬度相关(常用)的结果信息
+
  //以下只列举部分获取经纬度相关(常用)的结果信息
        //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
+
  //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
  
        //获取纬度信息
+
  //获取纬度信息
        double latitude = location.getLatitude();
+
  double latitude = location.getLatitude();
        //获取经度信息
+
  //获取经度信息
        double longitude = location.getLongitude();
+
  double longitude = location.getLongitude();
        //获取定位精度,默认值为0.0f
+
  //获取定位精度,默认值为0.0f
        float radius = location.getRadius();
+
  float radius = location.getRadius();
        //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
+
  //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
        String coorType = location.getCoorType();
+
  String coorType = location.getCoorType();
        //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
+
  //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
        int errorCode = location.getLocType();
+
  int errorCode = location.getLocType();
     
+
    }
+
}
 
}
 
}
  
 
</pre>
 
</pre>
 
</div>
 
</div>
                        </div>  
+
                  </div>  
                            <div class="phone-android">
+
                      <div class="phone-android">
                                <div class=" video-wrap infor">
+
                          <div class=" video-wrap infor">
                                    <div class="video-control"></div>
+
                              <div class="video-control"></div>
 
<pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/loctionvideo.mp4</pre>
 
<pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/loctionvideo.mp4</pre>
                                </div>
+
                          </div>
                            </div>
+
                      </div>
                        </div>
+
                  </div>
              </li>
+
        </li>
                    <li class=""><span>连续定位</span>
+
              <li class=""><span>连续定位</span>
                        <div class="code-wrap">
+
                  <div class="code-wrap">
                                <div class="code-left">
+
                          <div class="code-left">
  <div class="code-title">简介</div>
+
<div class="code-title">简介</div>
                                <div class="code-content">实际定位场景中,可能会存在很多的位置抖动,此示例展示了一种对定位结果进行的平滑优化处理实际测试下,该平滑策略在市区步行场景下,有明显平滑效果,有效减少了部分抖动,开放算法逻辑(具体算法在官网示例demo的LocationFilter类中查找),希望能够对开发者提供帮助。
+
                          <div class="code-content">实际定位场景中,可能会存在很多的位置抖动,此示例展示了一种对定位结果进行的平滑优化处理实际测试下,该平滑策略在市区步行场景下,有明显平滑效果,有效减少了部分抖动,开放算法逻辑(具体算法在官网示例demo的LocationFilter类中查找),希望能够对开发者提供帮助。
 
</div>
 
</div>
                                <div class="code-show">功能展示</div>
+
                          <div class="code-show">功能展示</div>
                                <div class="the-prettyprint">
+
                          <div class="the-prettyprint">
                                    <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12302">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
+
                              <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12302">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
                                    <pre class="prettyprint" id="code_d12302">
+
                              <pre class="prettyprint" id="code_d12302">
 
/**
 
/**
* 初始化定位参数配置
+
* 初始化定位参数配置
*/
+
*/
  
 
private void initLocationOption() {
 
private void initLocationOption() {
 
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
 
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
LocationClient locationClient = new LocationClient(getApplicationContext());
+
LocationClient locationClient = new LocationClient(getApplicationContext());
 
//声明LocationClient类实例并配置定位参数
 
//声明LocationClient类实例并配置定位参数
 
LocationClientOption locationOption = new LocationClientOption();
 
LocationClientOption locationOption = new LocationClientOption();
第129行: 第129行:
 
//可选,设置是否需要设备方向结果
 
//可选,设置是否需要设备方向结果
 
locationOption.setNeedDeviceDirect(false);
 
locationOption.setNeedDeviceDirect(false);
//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
+
//可选,默认false,设置是否当Gnss有效时按照1S1次频率输出Gnss结果
 
locationOption.setLocationNotify(true);
 
locationOption.setLocationNotify(true);
 
//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
 
//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
第140行: 第140行:
 
locationOption.SetIgnoreCacheException(false);  
 
locationOption.SetIgnoreCacheException(false);  
 
//可选,默认false,设置是否开启卫星定位
 
//可选,默认false,设置是否开启卫星定位
locationOption.setOpenGps(true);  
+
locationOption.setOpenGnss(true);  
 
//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
 
//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
 
locationOption.setIsNeedAltitude(false);
 
locationOption.setIsNeedAltitude(false);
第153行: 第153行:
 
}
 
}
 
/**
 
/**
* 实现定位回调
+
* 实现定位回调
*/
+
*/
 
public class MyLocationListener extends BDAbstractLocationListener{
 
public class MyLocationListener extends BDAbstractLocationListener{
    @Override
+
@Override
    public void onReceiveLocation(BDLocation location){
+
public void onReceiveLocation(BDLocation location){
        //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
+
  //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
        //以下只列举部分获取经纬度相关(常用)的结果信息
+
  //以下只列举部分获取经纬度相关(常用)的结果信息
        //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
+
  //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
  
        //获取纬度信息
+
  //获取纬度信息
        double latitude = location.getLatitude();
+
  double latitude = location.getLatitude();
        //获取经度信息
+
  //获取经度信息
        double longitude = location.getLongitude();
+
  double longitude = location.getLongitude();
        //获取定位精度,默认值为0.0f
+
  //获取定位精度,默认值为0.0f
        float radius = location.getRadius();
+
  float radius = location.getRadius();
        //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
+
  //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
        String coorType = location.getCoorType();
+
  String coorType = location.getCoorType();
        //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
+
  //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
        int errorCode = location.getLocType();
+
  int errorCode = location.getLocType();
     
+
    }
+
}
 
}
 
}
  
  
                </pre>
+
          </pre>
          </div>
+
    </div>
                            </div>  
+
                      </div>  
                                <div class="phone-android">
+
                          <div class="phone-android">
                                    <div class=" video-wrap">
+
                              <div class=" video-wrap">
                                        <div class="video-control"></div>
+
                                  <div class="video-control"></div>
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/locationFilter.mp4</pre>
+
                          <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/locationFilter.mp4</pre>
                                    </div>
+
                              </div>
                                </div>
+
                          </div>
                            </div>
+
                      </div>
                    </li>
+
              </li>
<li class=""><span>后台定位</span>
+
<li class=""><span>后台定位</span>
                        <div class="code-wrap">
+
                  <div class="code-wrap">
                                <div class="code-left">
+
                          <div class="code-left">
  <div class="code-title">简介</div>
+
<div class="code-title">简介</div>
                                <div class="code-content">为了最大程度的增加定位进程的存活率,百度Android定位SDK提供后台持续定位的能力,可在应用退后台的状态下,持续记录位置信息。具体请参考Android8.0定位须知中的介绍。
+
                          <div class="code-content">为了最大程度的增加定位进程的存活率,百度Android定位SDK提供后台持续定位的能力,可在应用退后台的状态下,持续记录位置信息。具体请参考Android8.0定位须知中的介绍。
 
</div>
 
</div>
                                <div class="code-show">功能展示</div>
+
                          <div class="code-show">功能展示</div>
                                <div class="the-prettyprint">
+
                          <div class="the-prettyprint">
                                    <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12303">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
+
                              <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12303">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
                                    <pre class="prettyprint" id="code_d12303">
+
                              <pre class="prettyprint" id="code_d12303">
 
//核心实现代码如下,详细代码请参考官网Demo。
 
//核心实现代码如下,详细代码请参考官网Demo。
 
//开启前台定位服务:
 
//开启前台定位服务:
第205行: 第205行:
 
Intent nfIntent = new Intent(MainActivity.this.getApplicationContext(), MainActivity.class);
 
Intent nfIntent = new Intent(MainActivity.this.getApplicationContext(), MainActivity.class);
 
builder.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, nfIntent, 0)) // 设置PendingIntent
 
builder.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, nfIntent, 0)) // 设置PendingIntent
    .setContentTitle("正在进行后台定位") // 设置下拉列表里的标题
+
.setContentTitle("正在进行后台定位") // 设置下拉列表里的标题
    .setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标
+
.setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标
    .setContentText("后台定位通知") // 设置上下文内容
+
.setContentText("后台定位通知") // 设置上下文内容
    .setAutoCancel(true)
+
.setAutoCancel(true)
    .setWhen(System.currentTimeMillis()); // 设置该通知发生的时间
+
.setWhen(System.currentTimeMillis()); // 设置该通知发生的时间
 
Notification notification = null;
 
Notification notification = null;
 
notification = builder.build();
 
notification = builder.build();
第217行: 第217行:
 
mLocClient.disableLocInForeground(true);// 关闭前台定位,同时移除通知栏
 
mLocClient.disableLocInForeground(true);// 关闭前台定位,同时移除通知栏
  
                </pre>
+
          </pre>
        </div>
+
  </div>
                            </div>  
+
                      </div>  
                                <div class="phone-android">
+
                          <div class="phone-android">
                                    <div class=" video-wrap">
+
                              <div class=" video-wrap">
                                        <div class="video-control"></div>
+
                                  <div class="video-control"></div>
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/serviceLocation.mp4</pre>
+
                          <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/serviceLocation.mp4</pre>
                                    </div>
+
                              </div>
                                </div>
+
                          </div>
                            </div>
+
                      </div>
                    </li>
+
              </li>
 
<li class=""><span>位置提醒</span>
 
<li class=""><span>位置提醒</span>
                        <div class="code-wrap">
+
                  <div class="code-wrap">
                                <div class="code-left">
+
                          <div class="code-left">
  <div class="code-title">简介</div>
+
<div class="code-title">简介</div>
                                <div class="code-content">定位SDK支持位置提醒功能,当用户到达开发者设定的位置区域时,会触发相应提示。
+
                          <div class="code-content">定位SDK支持位置提醒功能,当用户到达开发者设定的位置区域时,会触发相应提示。
 
</div>
 
</div>
                                <div class="code-show">功能展示</div>
+
                          <div class="code-show">功能展示</div>
                                <div class="the-prettyprint">
+
                          <div class="the-prettyprint">
                                    <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12304">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
+
                              <div class="copy-btn" data-title="复制" data-clipboard-action="copy" data-clipboard-target="#code_d12304">https://mapopen-website-wiki.cdn.bcebos.com/wiki/android-loc-sdk/copy.png</div>
                                    <pre class="prettyprint" id="code_d12304">
+
                              <pre class="prettyprint" id="code_d12304">
  
 
public LocationClient mLocationClient = null;
 
public LocationClient mLocationClient = null;
 
public BDNotifyListener myListener = new MyNotifyListener();
 
public BDNotifyListener myListener = new MyNotifyListener();
 
/**
 
/**
*请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。推荐使用getApplicationConext()方法获取全进程有效的Context。
+
*请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。推荐使用getApplicationConext()方法获取全进程有效的Context。
*/
+
*/
 
public void onCreate() {
 
public void onCreate() {
    //声明LocationClient类
+
//声明LocationClient类
    mLocationClient = new LocationClient(getApplicationContext());     
+
mLocationClient = new LocationClient(getApplicationContext());     
    //注册监听函数
+
//注册监听函数
    mLocationClient.registerNotify(myListener);     
+
mLocationClient.registerNotify(myListener);     
 
}
 
}
 
/**
 
/**
*定义MyNotifyLister类,继承BDNotifyListener,实现位置监听的回调。
+
*定义MyNotifyLister类,继承BDNotifyListener,实现位置监听的回调。
*/
+
*/
 
public class MyNotifyLister extends BDNotifyListener {
 
public class MyNotifyLister extends BDNotifyListener {
    public void onNotify(BDLocation mlocation, float distance){
+
public void onNotify(BDLocation mlocation, float distance){
        //已到达设置监听位置附近
+
  //已到达设置监听位置附近
   
+
 
}
 
}
 
//调用BDNotifyListener的setNotifyLocation方法,实现设置位置消息提醒。
 
//调用BDNotifyListener的setNotifyLocation方法,实现设置位置消息提醒。
第265行: 第265行:
 
//调用BDNotifyListener的removeNotifyEvent方法,实现取消位置监听
 
//调用BDNotifyListener的removeNotifyEvent方法,实现取消位置监听
 
mLocationClient.removeNotifyEvent(myListener);
 
mLocationClient.removeNotifyEvent(myListener);
                </pre>
+
          </pre>
        </div>
+
  </div>
                            </div>  
+
                      </div>  
                                <div class="phone-android">
+
                          <div class="phone-android">
                                    <div class=" video-wrap">
+
                              <div class=" video-wrap">
                                        <div class="video-control"></div>
+
                                  <div class="video-control"></div>
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/ remind.mp4</pre>
+
                          <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/ remind.mp4</pre>
                                    </div>
+
                              </div>
                                </div>
+
                          </div>
                            </div>
+
                      </div>
                    </li>
+
              </li>
                </ul>
+
          </ul>
            </div>
+
      </div>
        </div>
+
  </div>
    </div>
+
</div>

2023年1月5日 (四) 17:42的最后版本

  • 基础定位
    简介
    定位SDK的核心能力就是帮助开发者快速、精准的获取用户定位。开发者只需按照如下流程操作,即可获取用户当前经纬度。
    功能展示
    copy.png
    /**
    * 初始化定位参数配置
    */
    
    private void initLocationOption() {
    //定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
    LocationClient locationClient = new LocationClient(getApplicationContext());
    //声明LocationClient类实例并配置定位参数
    LocationClientOption locationOption = new LocationClientOption();
    MyLocationListener myLocationListener = new MyLocationListener();
    //注册监听函数
    locationClient.registerLocationListener(myLocationListener); 
    //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    locationOption.setLocationMode(LocationMode.Hight_Accuracy); 
    //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
    locationOption.setCoorType("gcj02");
    //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
    locationOption.setScanSpan(1000);
    //可选,设置是否需要地址信息,默认不需要
    locationOption.setIsNeedAddress(true);
    //可选,设置是否需要地址描述
    locationOption.setIsNeedLocationDescribe(true);
    //可选,设置是否需要设备方向结果
    locationOption.setNeedDeviceDirect(false);
    //可选,默认false,设置是否当卫星定位有效时按照1S1次频率输出卫星定位结果
    locationOption.setLocationNotify(true);
    //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
    locationOption.setIgnoreKillProcess(true); 
    //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
    locationOption.setIsNeedLocationDescribe(true);
    //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
    locationOption.setIsNeedLocationPoiList(true);
    //可选,默认false,设置是否收集CRASH信息,默认收集
    locationOption.SetIgnoreCacheException(false); 
    //可选,默认false,设置是否开启卫星定位
    locationOption.setOpenGnss(true); 
    //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
    locationOption.setIsNeedAltitude(false);
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
    locationOption.setOpenAutoNotifyMode();
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
    locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT); 
    //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
    locationClient.setLocOption(locationOption);
    //开始定位
    locationClient.start();
    }
    /**
    * 实现定位回调
    */
    public class MyLocationListener extends BDAbstractLocationListener{
    @Override
    public void onReceiveLocation(BDLocation location){
      //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
      //以下只列举部分获取经纬度相关(常用)的结果信息
      //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
    
      //获取纬度信息
      double latitude = location.getLatitude();
      //获取经度信息
      double longitude = location.getLongitude();
      //获取定位精度,默认值为0.0f
      float radius = location.getRadius();
      //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
      String coorType = location.getCoorType();
      //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
      int errorCode = location.getLocType();
     
    }
    }
    
    
    http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/loctionvideo.mp4
  • 连续定位
    简介
    实际定位场景中,可能会存在很多的位置抖动,此示例展示了一种对定位结果进行的平滑优化处理实际测试下,该平滑策略在市区步行场景下,有明显平滑效果,有效减少了部分抖动,开放算法逻辑(具体算法在官网示例demo的LocationFilter类中查找),希望能够对开发者提供帮助。
    功能展示
    copy.png
    /**
    * 初始化定位参数配置
    */
    
    private void initLocationOption() {
    //定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
    LocationClient locationClient = new LocationClient(getApplicationContext());
    //声明LocationClient类实例并配置定位参数
    LocationClientOption locationOption = new LocationClientOption();
    MyLocationListener myLocationListener = new MyLocationListener();
    //注册监听函数
    locationClient.registerLocationListener(myLocationListener); 
    //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    locationOption.setLocationMode(LocationMode.Hight_Accuracy); 
    //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
    locationOption.setCoorType("gcj02");
    //可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
    locationOption.setScanSpan(1000);
    //可选,设置是否需要地址信息,默认不需要
    locationOption.setIsNeedAddress(true);
    //可选,设置是否需要地址描述
    locationOption.setIsNeedLocationDescribe(true);
    //可选,设置是否需要设备方向结果
    locationOption.setNeedDeviceDirect(false);
    //可选,默认false,设置是否当Gnss有效时按照1S1次频率输出Gnss结果
    locationOption.setLocationNotify(true);
    //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
    locationOption.setIgnoreKillProcess(true); 
    //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
    locationOption.setIsNeedLocationDescribe(true);
    //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
    locationOption.setIsNeedLocationPoiList(true);
    //可选,默认false,设置是否收集CRASH信息,默认收集
    locationOption.SetIgnoreCacheException(false); 
    //可选,默认false,设置是否开启卫星定位
    locationOption.setOpenGnss(true); 
    //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
    locationOption.setIsNeedAltitude(false);
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
    locationOption.setOpenAutoNotifyMode();
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
    locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT); 
    //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
    locationClient.setLocOption(locationOption);
    //开始定位
    locationClient.start();
    }
    /**
    * 实现定位回调
    */
    public class MyLocationListener extends BDAbstractLocationListener{
    @Override
    public void onReceiveLocation(BDLocation location){
      //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
      //以下只列举部分获取经纬度相关(常用)的结果信息
      //更多结果信息获取说明,请参照类参考中BDLocation类中的说明
    
      //获取纬度信息
      double latitude = location.getLatitude();
      //获取经度信息
      double longitude = location.getLongitude();
      //获取定位精度,默认值为0.0f
      float radius = location.getRadius();
      //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准
      String coorType = location.getCoorType();
      //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明
      int errorCode = location.getLocType();
     
    }
    }
    
    
               
    http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/locationFilter.mp4
  • 后台定位
    简介
    为了最大程度的增加定位进程的存活率,百度Android定位SDK提供后台持续定位的能力,可在应用退后台的状态下,持续记录位置信息。具体请参考Android8.0定位须知中的介绍。
    功能展示
    copy.png
    //核心实现代码如下,详细代码请参考官网Demo。
    //开启前台定位服务:
    Notification.Builder builder = new Notification.Builder (MainActivity.this.getApplicationContext());
    //获取一个Notification构造器
    
    Intent nfIntent = new Intent(MainActivity.this.getApplicationContext(), MainActivity.class);
    builder.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, nfIntent, 0)) // 设置PendingIntent
    .setContentTitle("正在进行后台定位") // 设置下拉列表里的标题
    .setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标
    .setContentText("后台定位通知") // 设置上下文内容
    .setAutoCancel(true)
    .setWhen(System.currentTimeMillis()); // 设置该通知发生的时间
    Notification notification = null;
    notification = builder.build();
    notification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音
    mLocClient.enableLocInForeground(1001, notification);// 调起前台定位
    //停止前台定位服务:
    mLocClient.disableLocInForeground(true);// 关闭前台定位,同时移除通知栏
    
               
    http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/serviceLocation.mp4
  • 位置提醒
    简介
    定位SDK支持位置提醒功能,当用户到达开发者设定的位置区域时,会触发相应提示。
    功能展示
    copy.png
    
    public LocationClient mLocationClient = null;
    public BDNotifyListener myListener = new MyNotifyListener();
    /**
    *请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。推荐使用getApplicationConext()方法获取全进程有效的Context。
    */
    public void onCreate() {
    //声明LocationClient类
    mLocationClient = new LocationClient(getApplicationContext());     
    //注册监听函数
    mLocationClient.registerNotify(myListener);    
    }
    /**
    *定义MyNotifyLister类,继承BDNotifyListener,实现位置监听的回调。
    */
    public class MyNotifyLister extends BDNotifyListener {
    public void onNotify(BDLocation mlocation, float distance){
      //已到达设置监听位置附近
    }   		
    }
    //调用BDNotifyListener的setNotifyLocation方法,实现设置位置消息提醒。
    //设置位置提醒,四个参数分别是:纬度、精度、半径、坐标类型
    myListener.setNotifyLocation(40.0f, 116.0f, 3000, mLocationClient.getLocOption().getCoorType());
    //启动定位,SDK便会自动开启位置消息提醒的监听
    mLocationClient.start();
    //调用BDNotifyListener的removeNotifyEvent方法,实现取消位置监听
    mLocationClient.removeNotifyEvent(myListener);
               
    http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/ remind.mp4
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消