setAgreePrivacy initTrace setInterval startTrace startGather stopTrace stopGather queryHistoryTrack createCircleFence createPolygonFence queryCacheTrackRequest queryDistance queryFenceHistoryAlarmInfo deleteFence queryRTTrack addEntity queryMonitoredStatus
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
bTrace插件封装了百度鹰眼轨迹SDK,该sdk提供如下功能:
注意事项:
使用任何鹰眼轨迹接口前,必须先在百度轨迹管理台中创建鹰眼服务,获得servie_id后方可正式使用鹰眼轨迹。 一个service(即鹰眼轨迹服务,其唯一标识为service_id)对应一个的轨迹管理系统,至多同时管理100万个entity(即终端设备)。若需管理超过100万的终端,可创建多个service分别管理。创建鹰眼服务获取servie_id
在Android系统中通常使用轨迹追踪的应用都需要长时间后台运行,若手机开启了省电模式、各手机厂商定制的优化模式(如小米手机的神隐模式)、第三方安全应用的省电模式(如360手机卫士),则进程可能会被杀死。 处理策略为,用户在手机端关闭省电模式,或将APP加入这些模式的白名单
基本概念: 在使用插件前,需要了解百度鹰眼的一些基本概念,想要了解更多请到百度鹰眼官方网站
使用说明: 使用该插件需要到百度控制台申请appKey
配置说明: 使用此插件之前需先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:
<!-- Android 配置方法 -->
<meta-data name="com.baidu.lbsapi.API_KEY" value="0Du6ujuego7WfAdHFOZ8rEr8Of0AHa9i"/>
<!-- iOS 配置方法 -->
<feature name="bTrace">
<param name="api_key" value="ATu9pjnegF7HfAgHuOZbrErnOf0A8ak0"/>
<param name="MCODE" value="com.apicloud.app"/>
</feature>
申请后台定位功能权限
由于系统限制,定位功能必须在 app 为当前激活使用状态或后台运行状态时才能正常运行。所以若要集成后台定位功能,必须得配置 config 文件 以申请后台运行权限,然后应用打包或自定义 loader 方可正常使用。配置实例如下:
//配置一个后台定位功能:
<preference name="backgroundMode" value="location"/>
//配置多个后台运行功能,各值之间用竖线 | 隔开:
<preference name="backgroundMode" value="location | audio"/>
注意:
初始化前先用 api.hasPermission
和 api.requestPermission
接口判断申请后台定位权限。
#插件接口
隐私合规接口
自原生插件 1.1.6后请务必同意该接口,否则该原生插件将不能正常使用,隐私政策可参考百度地图官网
setAgreePrivacy(callback(ret, err))
var bTrace = api.require('bTrace');
bTrace.setAgreePrivacy({
agree:true
});
iOS、Android系统
可提供的1.5.0及更高版本
初始化轨迹
initTrace({params}, callback(ret))
serviceId:
entityName:
keepAlive:
isNeedObjectStorage:
ret:
{
status:true // 布尔类型;sdk是否初始化成功;
message:'', // 字符串类型;返回消息(该字段和eventType一起返回)
code:10020, // 数字类型;返回的code(该字段和eventType一起返回)
eventType:'serviceStart' // 字符串类型;服务开启;取值范围如下:
// serviceStart 服务开启
// serviceStop 服务关闭
// gatherStart 开始采集数据
// gatherStop 停止采集数据
}
var baiduTrace = api.require('bTrace');
baiduTrace.initTrace({
serviceId: 1000,
entityName: 'daughter',
}, function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
设置定位和回传周期
initTrace({params}, callback(ret))
gatherInterval:
packInterval:
ret:
{
status:true // 布尔类型;是否设置成功;
}
var baiduTrace = api.require('bTrace');
baiduTrace.setInterval({
gatherInterval: 2,
packInterval: 10,
}, function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
开启轨迹服务
startTrace({params}, callback(ret))
accuracy:
filter:
ret:
{
status:true // 布尔类型;是否开启成功;
}
var baiduTrace = api.require('bTrace');
baiduTrace.startTrace(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
开启采集数据
startGather(callback(ret))
ret:
{
status:true // 布尔类型;是否采集成功;
}
var baiduTrace = api.require('bTrace');
baiduTrace.startGather(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
停止轨迹服务
stopTrace(callback(ret))
ret:
{
status:true // 布尔类型;停止轨迹服务;
}
var baiduTrace = api.require('bTrace');
baiduTrace.stopTrace(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
停止数据采集
stopGather(callback(ret))
ret:
{
status:true // 布尔类型;停止采集;
}
var baiduTrace = api.require('bTrace');
baiduTrace.stopGather(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
查询历史轨迹
queryHistoryTrack({params}, callback(ret))
tag:
serviceId:
entityName:
startTime:
endTime:
pageSize:
pageIndex:
processOption:
{
needDenoise: true, //(可选项)布尔类型;是否开启去噪功能
needVacuate: true, //(可选项)布尔类型;是否开启抽稀操作
needMapMatch:true, //(可选项)布尔类型;是否需要绑路
radiusThreshold: 100 //(可选项)数字类型;设置精度过滤值
transportMode:'walking' //(可选项)字符串类型;交通方式 // 取值范围:walking, riding, driving
}
coordType:
ret:
{
result:[{
direction:'', // 数字类型;方向
height:'', // 数字类型;高度
locTime:'', // 数字类型;定位时间
radius:'', // 数字类型;定位精度
speed:'', // 数字类型;速度
latitude:'', // 数字类型;纬度
longitude:'' // 数字类型;经度
}]
**iOS返回以下参数**
size:'31',
distance:61.89,
message:成功,
points:[{
direction:264, // 数字类型;方向
loc_time:'', // 数字类型;定位时间
radius:'65', // 数字类型;定位精度
floor:'',
create_time:'',// 字符串类型;创建时间
speed:0, // 数字类型;速度
locate_mode'网络定位',
latitude:'', // 数字类型;纬度
longitude:'' // 数字类型;经度
}]
}
var baiduTrace = api.require('bTrace');
baiduTrace.queryHistoryTrack({
tag:0,
serviceId:12345,
entityName:'myCar',
startTime:new Date().getTime() / 1000 - 10000,
endTime:new Date().getTime() / 1000,
pageSize:1000,
pageIndex:10
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS 、Android系统
可提供的1.0.0及更高版本
创建圆形围栏(客户端只支持圆形围栏)
createCircleFence({params}, callback(ret))
tag:
serviceId:
entityName:
monitoredCenter:
type:
centerLatitude:
centerLongitude:
radius:
denoise:
fenceName:
coordType:
ret:
{
status:0, //数字类型;返回状态
message:'创建成功', //字符串类型;返回信息
fenceId: 2323, // 数字类型;围栏Id
fenceName:'', // 字符串类型;围栏名称 **仅支持 Android 平台**
fenceShape:'circle', // 字符串类型; 取值范围:circle 圆形 polygon 多边形 **仅支持 Android 平台**
fenceType:'local' //字符串类型;取值范围:local 本地 server 服务器 **仅支持 Android 平台**
}
var baiduTrace = api.require('bTrace');
baiduTrace.createCircleFence({
tag:0,
serviceId:12345,
entityName:'myCar',
centerLatitude:23.4545,
centerLongitude:45.455
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
创建多边形围栏(客户端只支持圆形围栏)
createPolygonFence({params}, callback(ret))
tag:
serviceId:
fenceName:
entityName:
monitoredCenter:
vertexes:
[{
latitude:23.45,
longitude:34.12
}]
denoise:
coordType:
ret:
{
status:0, //数字类型;返回状态
message:'创建成功', //字符串类型;返回信息
fenceId: 2323, // 数字类型;
fenceName:'', // 字符串类型
fenceShape:'circle', // 字符串类型; 取值范围:circle 圆形 polygon 多边形
fenceType:'local' //字符串类型;取值范围:local 本地 server 服务器
}
var baiduTrace = api.require('bTrace');
baiduTrace.createPolygonFence({
tag:0,
serviceId:12345,
entityName:'myCar',
centerLatitude:23.4545,
centerLongitude:45.455
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
查询缓存轨迹
queryCacheTrackRequest({params}, callback(ret))
entityName:
entityNames:
serviceId:
tag:
ret:
{
**以下返回值仅支持 Android 平台**
startTime: 2323, // 数字类型;开始时间戳
endTime:23456, // 数字类型;结束时间戳
entityName:'myCar', // 字符串类型;实体名称
total:10 //字符串类型;缓存数量
**以下返回值仅支持 iOS 平台**
message: '', //字符串类型;信息
result:[{ //数组类型;获取的结果
end_time:'', //字符串类型;结束时间戳
entity_name:'', //字符串类型;实体名
start_time:'' //字符串类型;开始时间戳
total:3 //数字类型;总数
}],
status: 0, //数字类型;状态
tag: 1 //数字类型;标识
}
var baiduTrace = api.require('bTrace');
baiduTrace.queryCacheTrackRequest({
tag:0,
serviceId:12345,
entityName:'myCar',
},function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
})
iOS系统、Android系统
可提供的1.0.0及更高版本
清除缓存轨迹
clearCacheTrackRequest({params,callback})
entityNames:
[
'myCar' // 字符串;实体名称数组
]
entities:
{
name:'', //字符串类型;实体名
startTime: , //数字类型;开始时间
endTime: //数字类型;结束时间
}
serviceId:
tag:
ret:
{
message: '', //字符串类型;信息
status: 0, //数字类型;状态
tag: 1 //数字类型;标识
}
var baiduTrace = api.require('bTrace');
baiduTrace.clearCacheTrackRequest({
tag:0,
serviceId:12345,
entityName:'myCar',
})
iOS系统、Android系统
可提供的1.0.0及更高版本
查询轨迹里程
queryDistance({params})
entityName:
serviceId:
tag:
startTime:
endTime:
transportMode:
ret:
{
distance:10000 // 数字类型;轨迹里程数 (仅支持 Android 平台)
}
var baiduTrace = api.require('bTrace');
baiduTrace.queryDistance({
tag:0,
serviceId:12345,
entityName:'myCar',
startTime:new Date().getTime() / 1000 - 10000,
endTime:new Date().getTime(),
transportMode:'driving'
})
iOS系统、Android系统
可提供的1.0.0及更高版本
查询报警信息
queryFenceHistoryAlarmInfo({params})
serviceId:
tag:
startTime:
endTime:
monitoredPerson:
coordType:
fenceIds:
[
123456 // 数字类型;fenceIds
]
ret:
{
status:0
message:''
result:[{
fenceId:10000, // 数字类型;轨迹里程数
fenceName:'', // 字符串类型;围栏名称
monitoredPerson:'', // 字符串类型;被监控的对象
monitoredAction:'enter' // 字符串类型;监控行为 取值范围:// enter 进入围栏
// exit 离开围栏
}]
}
var baiduTrace = api.require('bTrace');
baiduTrace.queryFenceHistoryAlarmInfo({
tag:0,
serviceId:12345,
entityName:'myCar',
startTime:new Date().getTime() / 1000 - 10000,
endTime:new Date()/getTime(),
monitoredPerson:'myCar',
coordType:'bd09ll',
fenceIds:[1223,4554,23443]
})
iOS系统、Android系统
可提供的1.0.0及更高版本
删除围栏
deleteFence({params})
serviceId:
tag:
type:
monitoredPerson:
fenceIds:
[
123456 // 数字类型;fenceIds
]
ret:
{
status:true
}
var baiduTrace = api.require('bTrace');
baiduTrace.deleteFence({
tag:0,
serviceId:12345,
entityName:'myCar',
type:'server',
fenceIds:[1223,4554,23443]
},function(ret){
api.alert({msg: JSON.stringify(ret)});
})
iOS系统、Android系统
可提供的1.0.0及更高版本
检索符合过滤条件的Entity终端实体 仅支持iOS 平台
queryRTTrack({params}, callback(ret))
serviceId:
entityNames:
columnKey:
activeTime:
pageSize:
pageIndex:
returnType:
ret:
{
status: true, // 布尔类型; 操作是否成功
result: '' // 字符串类型; 查询成功后的结果
}
err:
{
msg : '' // 字符串类型;错误消息
}
var bTrace = api.require('bTrace');
bTrace.queryRTTrack({
entityNames: 'daughter',
serviceId: 1234,
columnKey: '',
activeTime: 0,
pageSize: 1000,
pageIndex: 10
}, function(ret, err) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
})
iOS系统
可提供的1.0.0及更高版本
添加Entity 仅支持iOS 平台
addEntity({params}, callback(ret))
serviceId:
entityName:
entityDES:
columnKey:
ret:
{
status: true, // 布尔类型; 操作是否成功
}
var bTrace = api.require('bTrace');
bTrace.addEntity({
serviceId:1001,
entityName:'dad',
columnKey: ''
}, function(ret) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
})
iOS系统
可提供的1.0.0及更高版本
查询实时状态,查询被监控对象和客户端地理围栏的位置关系
queryMonitoredStatus({params}, callback(ret))
tag:
serviceId:
fenceId:
monitoredPersons:
type:
ret:
{
status: true, // 布尔类型; 操作是否成功
result: '' // 字符串类型; 查询结果
}
var bTrace = api.require('bTrace');
bTrace.queryMonitoredStatus({
fenceId:1001,
monitoredPersons: 'daughter,son'
}, function(ret) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
})
iOS系统
可提供的1.0.0及更高版本