定位SDK的核心能力就是帮助开发者快速、精准的获取用户定位信息。开发者只需按照如下流程操作,即可获取用户当前经纬度。
在使用定位SDK进行具体开发工作之前,需获取密钥(AK), 并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。
请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。
建议在EntryAbility中使用单例模式声明LocationClient类对象,方便全局使用同一个对象。该对象初始化需传入Context类型参数。 推荐使用getApplicationConext()方法获取全进程有效的Context。
核心代码段如下:
let locClient: LocationClient | null = null;try {locClient = new LocationClient(context);} catch (Error) {}
定位SDK能够返回三种坐标类型的经纬度(国内),分别是gcj02(国测局坐标)、bd09(百度墨卡托坐标)和bd09ll(百度经纬度坐标)。 如果开发者想利用定位SDK获得的经纬度直接在百度地图上标注,请选择坐标类型bd09ll。
在海外地区定位所获得的经纬度,坐标类型默认、且只能是wgs84类型。
利用LocationClientOption类配置定位SDK参数。核心代码及注释说明如下:
let option = new LocationClientOption();option.setCoorType("gcj02");// 可选,默认为gcj02//gcj02:国测局坐标;//bd09ll:百度经纬度坐标;//bd09:百度墨卡托坐标;option.setTimeInterval(2); // 可选,默认1秒,设置连续定位请求的时间间隔option.setDistanceInterval(0); // 可选,默认0米,设置连续定位的距离间隔option.setLocationMode(LocationMode.High_Accuracy); //可选,默认高精度,设置定位模式,高精度、低功耗、仅设备if (locClient != null) {locClient.setLocOption(option);}
定位SDK对外提供了Abstract类型的监听接口BDAbstractLocationListener, 用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用, 该接口会异步获取定位结果, 核心代码如下:
class MyLocationListener extends BDLocationListener {onReceiveLocation(bdLocation: BDLocation): void {//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果//以下只列举部分获取经纬度相关(常用)的结果信息//更多结果信息获取说明,请参照类参考中BDLocation类中的说明let longitude: number = bdLocation.getLongitude(); //获取经度信息let latitude: number = bdLocation.getLatitude(); //获取纬度信息let radius: number = bdLocation.getRadius(); //获取半径信息let coorType: string = bdLocation.getCoorType(); // 获取坐标系let locType: string = bdLocation.getLocType(); // 获取定位错误码}
上一篇
下一篇
本篇文章对您是否有帮助?