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

文档全面上新

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

体验新版
(以“<div class="md-container"> <div class="md-atomic"> <div class="md-vertical-code-tab"> <ul class="tabs-collapse"> ...”为内容创建页面)
 
第89行: 第89行:
 
                             </div>
 
                             </div>
 
                         </div>
 
                         </div>
                
+
               </li>
 +
                    <li class=""><span>连续定位</span>
 +
                        <div class="code-wrap">
 +
                                <div class="code-left">
 +
  <div class="code-title">简介</div>
 +
                                <div class="code-content">实际定位场景中,可能会存在很多的位置抖动,此示例展示了一种对定位结果进行的平滑优化处理实际测试下,该平滑策略在市区步行场景下,有明显平滑效果,有效减少了部分抖动,开放算法逻辑(具体算法在官网示例demo的LocationFilter类中查找),希望能够对开发者提供帮助。
 +
</div>
 +
                                <div class="code-show">功能展示</div>
 +
                                <pre class="prettyprint">
 +
/**
 +
* 初始化定位参数配置
 +
*/
 +
 
 +
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,设置是否当gps有效时按照1S1次频率输出GPS结果
 +
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,设置是否开启Gps定位
 +
locationOption.setOpenGps(true);
 +
//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
 +
locationOption.setIsNeedAltitude(false);
 +
//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
 +
locationOption.setOpenAutoNotifyMode();
 +
//设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
 +
locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT);
 +
//开始定位
 +
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();
 +
     
 +
    }
 +
}
 +
 
 +
 
 +
                </pre>
 +
                            </div>
 +
                                <div class="phone-android">
 +
                                    <div class=" video-wrap">
 +
                                        <div class="video-control"></div>
 +
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/locationFilter.mp4</pre>
 +
                                    </div>
 +
                                </div>
 +
                            </div>
 +
                    </li>
 +
<li class=""><span>后台定位</span>
 +
                        <div class="code-wrap">
 +
                                <div class="code-left">
 +
  <div class="code-title">简介</div>
 +
                                <div class="code-content">为了最大程度的增加定位进程的存活率,百度Android定位SDK提供后台持续定位的能力,可在应用退后台的状态下,持续记录位置信息。具体请参考Android8.0定位须知中的介绍。
 +
</div>
 +
                                <div class="code-show">功能展示</div>
 +
                                <pre class="prettyprint">
 +
//核心实现代码如下,详细代码请参考官网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);// 关闭前台定位,同时移除通知栏
 +
 
 +
                </pre>
 +
                            </div>
 +
                                <div class="phone-android">
 +
                                    <div class=" video-wrap">
 +
                                        <div class="video-control"></div>
 +
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/serviceLocation.mp4</pre>
 +
                                    </div>
 +
                                </div>
 +
                            </div>
 +
                    </li>
 +
<li class=""><span>位置提醒</span>
 +
                        <div class="code-wrap">
 +
                                <div class="code-left">
 +
  <div class="code-title">简介</div>
 +
                                <div class="code-content">定位SDK支持位置提醒功能,当用户到达开发者设定的位置区域时,会触发相应提示。
 +
</div>
 +
                                <div class="code-show">功能展示</div>
 +
                                <pre class="prettyprint">
 +
 
 +
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);
 +
                </pre>
 +
                            </div>
 +
                                <div class="phone-android">
 +
                                    <div class=" video-wrap">
 +
                                        <div class="video-control"></div>
 +
                                <pre>http://mapopen-pub-androidsdk.cdn.bcebos.com/location/video/ remind.mp4</pre>
 +
                                    </div>
 +
                                </div>
 +
                            </div>
 +
                    </li>
 
                 </ul>
 
                 </ul>
 
             </div>
 
             </div>
 
         </div>
 
         </div>
 
     </div>
 
     </div>

2018年11月9日 (五) 14:21的版本

  • 基础定位
    简介
    定位SDK的核心能力就是帮助开发者快速、精准的获取用户位置信息。开发者只需按照如下流程操作,即可获取用户当前经纬度。
    功能展示
    /**
     * 初始化定位参数配置
     */
    
    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,设置是否当gps有效时按照1S1次频率输出GPS结果
    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,设置是否开启Gps定位
    locationOption.setOpenGps(true); 
    //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
    locationOption.setIsNeedAltitude(false);
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
    locationOption.setOpenAutoNotifyMode();
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
    locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT); 
    //开始定位
    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类中查找),希望能够对开发者提供帮助。
    功能展示
    /**
     * 初始化定位参数配置
     */
    
    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,设置是否当gps有效时按照1S1次频率输出GPS结果
    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,设置是否开启Gps定位
    locationOption.setOpenGps(true); 
    //可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
    locationOption.setIsNeedAltitude(false);
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
    locationOption.setOpenAutoNotifyMode();
    //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
    locationOption.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT); 
    //开始定位
    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定位须知中的介绍。
    功能展示
    //核心实现代码如下,详细代码请参考官网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支持位置提醒功能,当用户到达开发者设定的位置区域时,会触发相应提示。
    功能展示
    
    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
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消