持续定位uniapp接口文档

1、获取持续定插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

示例代码

<script>
    //持续定位插件对象
    var loc = uni.requireNativePlugin('AMap-Loc');

    export default {
        data() {
        }
    }
</script>
2、检查定位权限,始终允许后台定位

检查定位权限,注:Android在app首次启动的第一个页面onLoad里调用时,部分手机第一次可能不会弹出权限检查,可延迟调用检查定位权限。

loc.checkLocationPermission(callback);

检查是否始终允许定位,注:ios只有首次安装时才会弹框提醒和回调。

loc.checkAlwaysLocationPermission(callback);

判断是否始终允许定位,为false时 引导用户去设置页面

var always = loc.grantedAlwaysLocation();

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

//检查定位权限, 注:Android在app首次启动的第一个页面onLoad里调用时,部分手机第一次可能不会弹出权限检查,可延迟调用检查定位权限

loc.checkLocationPermission(function(res){

console.log(res);

if (res.result == true) {

//检查 始终允许 定位,注:ios只有首次安装时才会弹框提醒和回调

loc.checkAlwaysLocationPermission(function(res2){

console.log(res2);

});

}

});

},

methods: {

grantedAlwaysLocation() {

//判断是否始终允许定位,为false 引导用户去设置页面

var always = loc.grantedAlwaysLocation();

console.log("always:" + always);

}

}

}

</script>

3、设置定位数据回调

loc.setLocationCallback(callback)

callback 返回 Object 参数说明

属性

类型

说明

code

Number

定位错误码, 可以参考高德定位官方文档定位SDK错误码对照表

data

Object

定位数据,当code == 0时返回该字段

msg

String

定位错误消息,当code != 0时返回该字段

data 返回 Object 参数说明

属性

类型

说明

latitude

Number

纬度

longitude

Number

经度

altitude

Number

海拔高度(单位:米) 默认值:0.0

speed

Number

当前速度(单位:米/秒) 默认值:0.0

bearing

Number

方向角(单位:度) 默认值:0.0

time

Number

定位时间戳

当setLocationOption定位配置needAddress: true时返回下列字段数据

address

String

地址信息(需要网络通畅,第一次有可能没有地址信息返回)

country

String

国家名称

province

String

省的名称

city

String

城市名称

cityCode

String

城市编码

district

String

区的名称

adCode

String

区域编码

street

String

街道名称

streetNum

String

门牌号

aoiName

String

兴趣面名称

poiName

String

兴趣点名称

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

//设置定位数据回调

loc.setLocationCallback(function(res){

console.log(res);

if (res.code == 0) {

var data = res.data;//定位数据

} else {

var errorCode = res.code;//定位错误码,参考https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode

var errorMsg = res.msg;//错误消息

}

});

}

}

</script>

4、设置定位配置

loc.setLocationOption(option)

option 参数说明

属性

类型

默认值

必填

说明

needAddress

boolean

设置是否返回地址信息,true:返回地址信息,false:不返回

android端定位配置

interval

Number

2000

设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。

locationPurpose

Number

设置定位场景,目前支持三种场景(0:签到、1:出行、2:运动,默认无场景)

locationMode

Number

2

定位模式,高德定位服务包含GPS和网络定位(Wi-Fi和基站定位)两种能力。定位SDK将GPS、网络定位能力进行了封装,以三种定位模式对外开放,SDK默认选择使用高精度定位模式。

2: 高精度定位模式,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果,以及对应的地址描述信息。

1: 设备定位模式,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位,需要在室外环境下才可以成功定位。

0: 低功耗定位模式:不会使用GPS和其他传感器,只会使用网络定位(Wi-Fi和基站定位)。

mockEnable

boolean

true

设置是否允许模拟软件Mock位置结果,多为模拟GPS定位结果,默认为true,允许模拟位置。

httpTimeOut

Number

30000

设置定位请求超时时间,单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。

locationCacheEnable

boolean

true

设置是否开启定位缓存机制,缓存机制默认开启。

sensorEnable

boolean

false

设置是否使用设备传感器 默认值:false 不使用设备传感器。当设置为true时会通过手机传感器获取海拔高度,如果手机没有对应的传感器会返回0.0。

ios端定位配置

enableHTTPS

boolean

true

是否开启HTTPS

allowsBackgroundLocationUpdates

boolean

false

是否允许后台定位。默认为false,设置为true的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iOS系统限制,需要在定位未开始之前或定位停止之后,修改该属性的值才会有效果。

pausesLocationUpdatesAutomatically

boolean

false

后台定位是否会被系统自动暂停。默认为false。

distanceFilter

Number

0.0

设定定位的最小更新距离。单位米,默认为0,表示只要检测到设备位置发生变化就会更新位置信息。

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

//设置定位数据回调

loc.setLocationCallback(function(res){

console.log(res);

if (res.code == 0) {

var data = res.data;//定位数据

} else {

var errorCode = res.code;//定位错误码,参考https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode

var errorMsg = res.msg;//错误消息

}

});

//定位配置

loc.setLocationOption({

needAddress:true,//定位是否需要解析地址

interval:2000,//(android)设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。

//httpTimeOut:30000//(android)设置定位请求超时时间,单位是毫秒,默认30000毫秒,不要低于8000毫秒。

//locationCacheEnable:false,//(android)设置是否开启定位缓存机制

allowsBackgroundLocationUpdates:true,//(ios)是否允许后台定位

pausesLocationUpdatesAutomatically:false,//(ios)后台定位是否会被系统自动暂停

distanceFilter:0//,//(ios)设置定位最小更新距离方法如下,单位米。当两次定位距离满足设置的最小更新距离时,SDK会返回符合要求的定位结果。

//enableHTTPS:true,//(ios)

});

}

}

</script>

5、开启后台定位功能

Android端接口:

loc.enableBackgroundLocation(object)

object 参数说明

属性

类型

默认值

必填

说明

contentTitle

String

app名称

保活通知栏标题

contentText

String

保活通知栏内容

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

},

enableBackgroundLocation() {

//android特有的接口

//检查是否允许通知,oppo vivo等部分手机默认不允许通知

if (loc.areNotificationsEnabled()) {

//是否忽略电池优化,vivo部分手机需要忽略电池优化,保活才不被杀掉

if (loc.isIgnoringBatteryOptimizations()) {

//开启后台定位功能

loc.enableBackgroundLocation({

contentTitle:"默认app名称",

contentText:"正在后台运行"

});

} else {

//请求忽略电池优化

loc.requestIgnoreBatteryOptimizations();

}

} else {

//打开设置通知

loc.openSetting();

}

}

}

</script>

iOS无此接口,通过定位配置setLocationOption开启后台定位

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

//定位配置

loc.setLocationOption({

allowsBackgroundLocationUpdates:true,//(ios)是否允许后台定位

pausesLocationUpdatesAutomatically:false//(ios)后台定位是否会被系统自动暂停

});

}

}

</script>

6、关闭后台定位功能

Android端接口:

loc.disableBackgroundLocation(removeNotification)

参数说明

参数

类型

说明

removeNotification

boolean

是否移除通知栏, true:移除通知栏,false:不移除通知栏,可以手动移除。

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

},

disableBackgroundLocation() {

//android特有的接口

//停止后台保活定位服务

var removeNotification = true;

loc.disableBackgroundLocation(removeNotification);

}

}

</script>

iOS无此接口,通过定位配置setLocationOption关闭后台定位

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

//定位配置

loc.setLocationOption({

allowsBackgroundLocationUpdates:false,//(ios)是否允许后台定位

pausesLocationUpdatesAutomatically:true//(ios)后台定位是否会被系统自动暂停

});

}

}

</script>

7、开启定位

loc.startLocation()

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

...

},

startLocation() {

//检查定位是否开启

var ret = loc.isLocationRunning();

if (ret == false) {

//开始定位

loc.startLocation();

} else {

uni.showToast({

title:"已经开启定位"

});

}

}

}

</script>

8、停止定位

loc.stopLocation()

示例代码

<script>

//持续定位插件对象

var loc = uni.requireNativePlugin('AMap-Loc');

export default {

data() {

},

onLoad() {

...

},

stopLocation() {

//检查定位是否开启

var ret = loc.isLocationRunning();

if (ret == true) {

//停止定位

loc.stopLocation();

};

}

}

</script>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值