更新记录
1.0.0(2023-09-26)
最新版
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:11 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
特别提醒
- 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款;
- 如有使用上的疑问、bug,可以QQ群(345533496)反馈;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
- 请仔细阅读文档结合示例demo测试有问题加q联系作者;
插件功能介绍
iOS鹰眼轨迹SDK版本3.2.0、Android-SDK版本3.2.1
- 轨迹采集、后台采集(可设置采集/上传周期,可设置定位选项);
- 设置缓存大小;
- 获取历史轨迹、缓存轨迹、轨迹纠偏、里程计算、清除缓存;
- 空间搜索(搜索终端),周边搜索(圆形搜索)、矩形搜索、多边形搜索、行政区搜索、关键字搜索;
- 地理围栏-服务端地理围栏(增删改查);
- 地理围栏-客户端地理围栏(增删改查);
- 轨迹分析-停留点分析;
- 轨迹分析-驾驶行为分析;
- 查询警报信息;
Android后台采集或保活设置
-
通知管理允许通知,允许自启动;
-
耗电保护允许后台运行;
-
电池设置中关闭智能耗电保护、省电模式、应用速冻等。
注意事项:
- iOS后台采集需要在manifest.json -> App常用其它设置 中配置定位的后台运行能力;
- Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。
- 结合示例demo能更快熟悉各个接口。
插件使用
插件通用参数说明
通用参数:后续插件中多次使用的参数说明
- 坐标系类型说明
参数 | 值类型 | 说明 |
---|---|---|
coordType | String | 101 WGS84 102:BGCJ02 103: BD09LL (默认:cordType = "103") |
- transportMode:指定被监控对象的交通方式
值 | 值类型 | 说明 |
---|---|---|
1001 | string | 驾车 |
1002 | string | 骑行 |
1003 | string | 步行 |
- 轨迹纠偏参数 (processOption)
参数 | 值类型 | 说明 |
---|---|---|
denoise | bool | 降噪 |
mapMatch | bool | 是否绑路 |
vacuateGrade | String | 抽稀取值范围[1,5] |
radiusThreshold | String | 纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。 |
transportMode | String | 见上面默认transportMode说明”transportMode=1001“ |
radiusThreshold说明:0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
轨迹追踪
鹰眼轨迹管理后台:https://lbsyun.baidu.com/trace/admin/service
官方文档:https://lbs.baidu.com/faq/api?title=android-yingyan/guide/analysis、https://lbs.baidu.com/faq/api?title=android-yingyan/guide/analysis
- 引入插件
const trajectoryTrackingMoudle = uni.requireNativePlugin('LY-DCBdTreace-TrajectoryTrackingMoudle');
- 配置轨迹服务信息(配置轨迹服务必须在开启服务前调用)
trajectoryTrackingMoudle.configServiceOption({
mcode: "io.dcloud.LYScanUniPlugin", //填写你在API控制台申请iOS类型AK时指定的Bundle Identifier iOS有效
serviceID: 237771, //填写你在鹰眼轨迹管理台创建的鹰眼服务对应的ID--ios/android 通用
entityName: "大郎的西瓜", //ios/android 通用
keepLive: true //ios/android 通用
}, res => {
})
配置参数说明:
参数 | 值类型 | 说明 |
---|---|---|
mcode | String | iOS Bundle Identifier(申请百度地图AK的Bundle Identifier)仅iOS有效 |
serviceID | String | 服务ID(后面需要开启的服务ID) |
entityName | String | 需要采集轨迹的实体名称 |
keepLive | bool | 是否需要后台采集 |
- 开启/停止轨迹服务
//开启服务
trajectoryTrackingMoudle.startService(res => {
uni.showToast({
icon: "none",
title: res.message
})
});
//停止服务
trajectoryTrackingMoudle.stopService(res => {
uni.showToast({
icon: "none",
title: res.message
})
});
//设置采集/上传周期 可以在开启服务前或在服务运行过程中动态设置定位和回传周期,设置完成后一旦进入下一采集周期即生效
//设置采集和打包周期时,要求采集周期和上传周期的值域均为[2, 300],且上传周期必须是采集周期的整数倍
trajectoryTrackingMoudle.changeGatherAndPackIntervals({
gatherInterval: 10, //采集周期
packInterval: 60 //上传周期
}, res => {
uni.showToast({
icon: "none",
title: res.message
})
});
- 开始/结束采集
//开始采集
trajectoryTrackingMoudle.startGather(res => {
uni.showToast({
icon: "none",
title: res.message
})
});
//结束采集
trajectoryTrackingMoudle.stopGather(res => {
uni.showToast({
icon: "none",
title: res.message
})
});
- 轨迹自定义字段上传
轨迹自定义属性上传说明:下例中heart_rate字段认为是自定义字段的名称,将value认为是自定义字段的值。需要注意的是,字典中的key必须是已经存在的 track属性字段。开发者可以通过鹰眼轨迹管理台,设置某个service的 track属性字段。
let i = Math.floor(Math.random() * 20+100);
trajectoryTrackingMoudle.customData({
heart_rate: i+""
}, res => {
console.log(res)
})
- 获取当前位置信息(仅Android有效切必须开启采集才可获取到值)
trajectoryTrackingMoudle.queryRealTimeLoc({
serviceID: "237771"//服务ID
}, res => {
//返回数据结构
<!--res= {
"direction": 0,
"loc_type": "NET_WORK",//定位类型 NET_WORK、GPS
"time": "2023-09-22 15:29:49",//当前时间
"indoor": "1",//室内定位结果类型
"coord_type": "bd09ll",//坐标类型
"floor": "",//楼层信息
"building": "",//获取建筑物信息
"latitude": 30.446815,//纬度
"speed": 0,// 获取速度,仅gps定位结果时有速度信息,单位 : 公里/小时
"radius": 40,//定位精度
"message": "成功",
"code": "000000",
"longitude": 120.263732,//经度
"altitude": 0//获取高度信息,仅GPS定位结果时有高度信息,单位 : 米
}-->
console.log(res);
})
- 查询缓存信息(网络中断、或网络不佳、上传时间太长都会有缓存在本地的轨迹信息)
let options = {
serviceID: "237771",//服务ID
needDistance: true, //是否需要返回所查询的缓存的里程信息,默认为false,当指定此属性为true时,查询到的缓存信息结构不变,只不过在每个entity对应的缓存信息字典中,新增了一个distance字段,表示该entity符合条件的里程数(单位:米)
distanceFilter: "100", //由于缓存里程在SDK端离线计算,无法享受到鹰眼服务端强大的轨迹纠偏功能。不过开发者可以通过设置distanceFilter属性(double类型),在计算里程时将不符合预期定位精度的轨迹点排除掉。例如设置distanceFilter=60的话,则定位精度超过60米的轨迹点都不会参与该entity的离线里程计算。而如果开发者不设置此字段,或将此字段的值设置为0,则所有缓存的轨迹点都参与计算//对应 Android的radiusThreshold
entityNames: "大郎的西瓜", //终端名称多个用英文逗号隔开
startTime: "24", //开始时间 单位小时 该字段表示当前时间的前多少小时
endTime: "0" //结束时间 单位小时 该字段表示当前时间的前多少小时
}
trajectoryTrackingMoudle.queryTrackCacheWith(options, res => {
<!--res={
code:"",
message:"",
result:[{
distance:0,//缓存距离
entityName:"",
num:"",
startTimestamp:"",
endTimestamp:"",
startTimeStr:"",
endTimeStr:""
}]
}-->
console.log(res)
})
- 设置缓存大小
// 缓存占用空间的最大值,最小值为50MB 默认不设置
trajectoryTrackingMoudle.setCacheMaxSize(50, res => {
uni.showToast({
icon: "none",
title: res.message
})
});
- 定位选项设置
let options = {
// 触发定位的距离阀值 默认200
distanceFilter:10
}
if(plus.os.name == "iOS"){
//出行类型 typeFitness:步行 typeAutomotiveNavigation:汽车导航 typeOtherNavigation:其他交通工具导航 typeOther:未知出行类型---仅iOS有效
options.activityType = "typeFitness";
// 定位精度 bestForNavigation:导航最佳精准 best:最佳精准 nearestTenMeters:10米误差 hundredMeters:百米误差 kilometer:千米误差 threeKilometers:3千米误差---仅iOS有效
options.desiredAccuracy = "nearestTenMeters";
}else if(plus.os.name == "Android"){
// android定位精度 High_Accuracy:高精度定位模式,GPS与网络综合定位 Device_Sensors:仅使用GPS Battery_Saving:低功耗定位模式,仅使用网络定位(WiFi和基站定位) 默认:Battery_Saving
options.androidLocationMode = "High_Accuracy"
}
trajectoryTrackingMoudle.configLocationAttribute(options)
- 清空缓存信息
let options = {
entityName: "大郎的西瓜",
serviceID: "237771",
startTime: "24", //开始时间 单位小时 该字段表示当前时间的前多少小时
endTime: "0" //结束时间 单位小时 该字段表示当前时间的前多少小时
}
trajectoryTrackingMoudle.clearTrackCacheWith(options, res => {
console.log(res)
})
- 查询最新轨迹点
let options = {
entityName: "大郎的西瓜",
serviceID: "237771",
coordType: "103", ////101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
processOption: { //纠偏配置 不需要纠偏 不传
denoise: false, //降噪
mapMatch: false, //绑路
vacuateGrade: "1", //抽稀 取值范围【1,5】
// 0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
radiusThreshold: "20",
// 查询纠偏后的实时位置时,指定被监控对象的交通方式、里程补偿的默认值为不补充,中断两点间距离不记入里程。1001:驾车 1002:骑行 1003:步行
transportMode: "1003"
}
}
trajectoryTrackingMoudle.queryTrackLatestPointWith(options, res => {
console.log(res)
})
- 里程计算(已经上传至服务端的轨迹)
let options = {
entityName: "大郎的西瓜",
serviceID: "237771",
startTime: "2", //单位小时
endTime: "0",
supplementMode: "", //10001:不补充,中断两点间距离不记入里程 10002:使用直线距离补充 10003:使用最短驾车路线距离补充 10004:使用最短骑行路线距离补充 10005:使用最短步行路线距离补充
isProcessed: true, //是否返回纠偏后的里程
lowSpeedThreshold: 20, //低速阈值,选填。(单位:千米/小时) 若填写该值且isProcessed=true时,则返回结果中将增加low_speed_distance字段,表示速度低于该值的里程。 示例: lowSpeedThreshold=20,则返回结果中将增加low_speed_distance字段表示此段轨迹中速度低于20千米/小时的里程,可用于网约车行业中计算低速里程。
processOption: { //纠偏配置
denoise: false, //降噪
mapMatch: false, //绑路
vacuateGrade: "1", //抽稀 取值范围【1,5】
// 0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
radiusThreshold: "20",
// 查询纠偏后的实时位置时,指定被监控对象的交通方式、里程补偿的默认值为不补充,中断两点间距离不记入里程。1001:驾车 1002:骑行 1003:步行
transportMode: "1003"
}
}
trajectoryTrackingMoudle.queryTrackDistanceWith(options, res => {
console.log(res)
})
- 查询一段时间内的轨迹
let options = {
entityName: "大郎的西瓜",
serviceID: "237771",
coordType: "103", ////101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
supplementMode: "10001", //10001:不补充,中断两点间距离不记入里程 10002:使用直线距离补充 10003:使用最短驾车路线距离补充 10004:使用最短骑行路线距离补充 10005:使用最短步行路线距离补充
supplementContent: "distance_and_points", //轨迹补偿内容 ---仅在supplementMode不为10001时生效 默认 only_distance:对于中断区间,只补偿中断的里程,不补偿轨迹点。 distance_and_points:对于中断区间,既补偿里程,又补偿轨迹点
sortType: "1001", //1001:升序 1002:倒序
index: "1", //分页页码
pageSize: "100", //每页数据条数
startTime: "1", //多少小时前的数据,以当前时间为结束时间。
endTime: "0",
isProcessed: true, //是否返回纠偏轨迹
lowSpeedThreshold: 20, //低速阈值,选填。(单位:千米/小时) 若填写该值且isProcessed=true时,则返回结果中将增加low_speed_distance字段,表示速度低于该值的里程。 示例: lowSpeedThreshold=20,则返回结果中将增加low_speed_distance字段表示此段轨迹中速度低于20千米/小时的里程,可用于网约车行业中计算低速里程。
processOption: {
denoise: false, //降噪
mapMatch: false, //绑路
vacuateGrade: "1", //抽稀 取值范围【1,5】
// 0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
radiusThreshold: "20",
// 查询纠偏后的实时位置时,指定被监控对象的交通方式、里程补偿的默认值为不补充,中断两点间距离不记入里程。1001:驾车 1002:骑行 1003:步行
transportMode: "1003"
}
}
trajectoryTrackingMoudle.queryHistoryTrackWith(options, res => {
console.log(res)
})
- 查询有单时间内的轨迹返回数据结构
{
"points": [
{
"direction": 106,
"longitude": 120.263743,
"speed": 0,
"latitude": 30.446809,
"loc_time": 1695369658,
"custom_data": {},
"height": 0,
"_supplement": 0,
"car_limit_speed": 0
}
],
"message": "成功",
"toll_distance": 0,
"end_point": {//起点
"height": 0,
"loc_time": 1695369658,
"direction": 0,
"longitude": 120.263743,
"speed": 0,
"radius": 0,
"latitude": 30.446809
},
"start_point": {//终点
"height": 0,
"loc_time": 1695352857,
"direction": 0,
"longitude": 120.26363542521,
"speed": 0,
"radius": 0,
"latitude": 30.446817504493
},
"code": "000000",
"distance": 53.862103989477,
"size": 9,//改页数据条数 最大值为请求时设置的pageSize
"total": 9,//轨迹点总数
"low_speed_distance": 0
}
- 监听推送警报信息(进入/离开地理围栏的警报信息)
trajectoryTrackingMoudle.listenPushMessage(res => {
// res = {
// "monitoredObject":"大郎的西瓜",//实体名称(被监听实体)
// "alarmDateStr":"2023-09-28 12:09:34",//触发警报时间
// "action":'进入',//进入还是离开围栏
// "fenceType":"客服端围栏",//围栏类型 客户端围栏/服务端围栏
// "fenceName":"",//围栏名称
// "fenceID":"",//围栏ID
// "pushMessage":""//完整信息
// }
});
- android保活/取消保活
<!--保活-->
trajectoryTrackingMoudle.keepAlive();
<!--取消保活-->
trajectoryTrackingMoudle.stopKeepAlive();
空间搜索(参考示例demo:spatialSearch.vue页面)
官方文档:https://lbs.baidu.com/faq/api?title=android-yingyan/guide/searchentity
实时查询entity最新位置、高度、速度、方向和相关属性信息。支持搜索方式:插件支持周边搜索、矩形范围搜索、多边形搜索、行政区搜索、关键字搜索
- 引入空间搜索模块
const searchMoudle = uni.requireNativePlugin('LY-DCBdTreace-SearchMoudle');
- 周边搜索
searchMoudle.aroundSearchEntity({
serviceID:"237771",//服务ID
lat:"30.446879",//圆心纬度
lng:"120.263822",//圆心精度
pageIndex:1,//查询页码
pageSize:10,//每页数据
inputCoordType:"103",// 输入坐标类型 101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
outputCoordType:"103",// 输出坐标类型 101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
radius:1000,//半径默认1km
filterCondition:{//筛选条件
inActiveTime:5,//当前时间5小时前有上传定位的entity 不能与activeTime同时设置(单位小时)
// activeTime:5,//当前时间5小时后有上传定位的entity 不能与inActiveTime同时设置(单位小时)
entityNames:["大郎的西瓜"],
columnKey:{//自定义属性 (选填)
}
}
},res=>{
uni.showToast({
title:res.message,
icon:"none"
})
})
- 矩形范围搜索
searchMoudle.boundSearchEntity({
serviceID:"237771",
pageIndex:1,
pageSize:10,
inputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
outputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
lowerLeft:{//左下角坐标,
lat:"30.445174",
lng:"120.263579"
},
upperRight:{//右上角坐标
lat:"30.449019",
lng:"120.26508"
},
filterCondition:{//筛选条件
inActiveTime:5,//当前时间5小时前有上传定位的entity 不能与activeTime同时设置(单位小时)
// activeTime:5,//当前时间5小时后有上传定位的entity 不能与inActiveTime同时设置(单位小时)
entityNames:["大郎的西瓜"],
columnKey:{//自定义属性 (选填)
}
}
},res=>{
uni.showToast({
title:res.message,
icon:"none"
})
})
- 多边形检索
searchMoudle.polygonSearchEntity({
serviceID:"237771",
pageIndex:1,
pageSize:10,
inputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
outputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
vertexes:[{//多边形的各个角经纬度
lat:"30.44533",
lng:"120.263139"
},
{
lat:"30.446723",
lng:"120.266472"
},
{
lat:"30.448786",
lng:"120.265816"
},
{
lat:"30.44733",
lng:"120.262322"
}],
filterCondition:{//筛选条件
inActiveTime:5,//当前时间5小时前有上传定位的entity 不能与activeTime同时设置(单位小时)
// activeTime:5,//当前时间5小时后有上传定位的entity 不能与inActiveTime同时设置(单位小时)
entityNames:["大郎的西瓜"],
columnKey:{//自定义属性 (选填)
}
}
},res=>{
uni.showToast({
title:res.message,
icon:"none"
})
})
- 行政区搜索
searchMoudle.districtSearchEntity({
serviceID:"237771",
pageIndex:1,
pageSize:10,
outputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
returnType:"all", //all:返回全部(默认all) simple:仅返回 total,即符合本次检索条件的所有entity 数量(若仅需行政区内entity数量,建议选择 simple,将提升检索性能)
keyword:"杭州市",
filterCondition:{//筛选条件
inActiveTime:5,//当前时间5小时前有上传定位的entity 不能与activeTime同时设置(单位小时)
// activeTime:5,//当前时间5小时后有上传定位的entity 不能与inActiveTime同时设置(单位小时)
entityNames:["大郎的西瓜"],
columnKey:{//自定义属性 (选填)
}
}
},res=>{
uni.showToast({
title:res.message,
icon:"none"
})
})
- 关键字搜索
searchMoudle.searchEntity({
serviceID:"237771",
pageIndex:1,
pageSize:10,
keyword:"",//关键字
outputCoordType:"103",//101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
filterCondition:{//筛选条件
inActiveTime:5,//当前时间5小时前有上传定位的entity 不能与activeTime同时设置(单位小时)
// activeTime:5,//当前时间5小时后有上传定位的entity 不能与inActiveTime同时设置(单位小时)
entityNames:["大郎的西瓜"],
columnKey:{//自定义属性 (选填)
}
}
},res=>{
uni.showToast({
title:res.message,
icon:"none"
})
})
- 空间搜索返回数据结构
{
"entities": [//范围内实体集合
{
"custom_data": {},//自定义属性
"modify_time": "2023-09-22 16:01:10",
"entity_name": "大郎的西瓜",
"latest_location": {//最新轨迹点信息
"longitude": 120.26365559273,
"direction": 0, //方向
"speed": 0,
"loc_time": 1695369658,
"custom_data": {},
"floor": "",//楼层信息--gps定位有效
"latitude": 30.446778963084,
"radius": 150,//定位精度
"coord_type": "\"bd09ll\"",//坐标类型
"height": 0,//高度-gps定位有效
"distance": 0// 获取距中心点距离,仅在周边搜索时该字段有值
},
"create_time": "2023-08-31 17:16:00"
}
],
"message": "成功",
"size": 1,
"code": "000000",
"total": 1
}
地理围栏
官网文档:https://lbs.baidu.com/faq/api?title=ios-yingyan/guide/geo-fencing、https://lbs.baidu.com/faq/api?title=android-yingyan/guide/geo-fencing
//引入地理围栏模块
const fenceMoudle = uni.requireNativePlugin('LY-DCBdTreace-FenceMoudle');
服务端围栏
服务端地理围栏的管理、计算、报警触发都在鹰眼服务端完成,依赖于轨迹点及时上传至服务端才能完成围栏的各种操作。因此要想完整地使用服务端地理围栏的功能,使用SDK的设备必须时刻保持联网状态,否则将无法及时触发服务端地理围栏,报警信息也无法及时推送至客户端。与客户端地理围栏相比,服务端地理围栏支持将报警信息推送。
服务端围栏类型:圆形围栏、多边形围栏、线行围栏、行政区围栏
- 创建服务端围栏
let options = {
serviceID: "237771",
serverFenceName: "第一个服务端围栏",
type: "1001",
coordType: "103",
entityName: "大郎的西瓜",
denoiseAccuracy: "10", //定位精度大于10米的轨迹点都不会参与围栏计算
circleFenceParameter:{
lat: "30.446782",
lng: "120.263684",
radius: "10"
}
}
fenceMoudle.createServerFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
)
创建围栏参数说明:
参数 | 值类型 | 说明 |
---|---|---|
serviceID | String | 服务ID |
serverFenceName | String | 围栏名称 |
type | String | 围栏类型(1001圆形 1002 多边形 1003 线行 1004 行政区域) |
coordType | String | 坐标类型(101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL) |
entityName | String | 需要监听的终端名称 |
denoiseAccuracy | String | 终端实体的定位精度大于该值的轨迹点不参与此围栏的计算(默认50)单位米 |
circleFenceParameter | object | 创建圆形围栏参数(type = 1001必传),详情见下表circleFenceParameter详解 |
polygonFenceParameter | Array | 创建多边形围栏参数(type = 1002必传),详情见下表polygonFenceParameter 详解 |
polylineFenceParameter | object | 创建线形围栏参数(type = 1003必传),详情见下表polylineFenceParameter 详解 |
districtFenceParameter | object | 创建行政区围栏参数(type = 1004必传)例:{keyWord:"浙江省杭州市西湖区"} |
circleFenceParameter 参数详解
参数 | 值类型 | 说明 |
---|---|---|
lat | String | 圆形纬度 |
lng | String | 圆形经度 |
radius | String | 半径(米) |
polygonFenceParameter 详解
//例如 [{ lat: "30.446601", lng: "120.263334" }, { lat: "30.446714", lng: "120.264017" }, { lat: "30.44736", lng: "120.264299" }, { lat: "30.447263", lng: "120.263657" }]
参数 | 值类型 | 说明 |
---|---|---|
lat | String | 多边形各个角的纬度 |
lng | String | 多边形各个角的经度 |
polylineFenceParameter 详解
例:
{ coors:[ { lat: "30.447022", lng: "120.264762" }, { lat: "30.447481", lng: "120.264461" }, { lat: "30.44801", lng: "120.264169," }, { lat: "30.44824", lng: "120.264057" }, { lat: "30.446683", lng: "120.264165" }, { lat: "30.446578", lng: "120.263504" }, { lat: "30.446216", lng: "120.262903" } ], offset:"20" }
参数 | 值类型 | 说明 |
---|---|---|
offset | String | 偏离距离 偏移距离(若偏离折线距离超过该距离即报警),单位:米 |
coors | Array | 直线上的点坐标集合 |
- 更新服务端地理围栏(服务围栏更新与创建服务围栏参数格式基本一致,多个fenceID围栏ID)
let options = {
serviceID: "237771",
fenceID: "38",//服务围栏ID
serverFenceName: "更新第一个服务端围栏",
type: "1002",
coordType: "103",
entityName: "大郎的西瓜",
denoiseAccuracy: "10", //定位精度大于10米的轨迹点都不会参与围栏计算
polygonFenceParameter: [{ ////type = 1002 需要传的参数
lat: "30.446601",
lng: "120.263334"
}, {
lat: "30.446714",
lng: "120.264017"
}, {
lat: "30.44736",
lng: "120.264299"
}, {
lat: "30.447263",
lng: "120.263657"
}]
}
fenceMoudle.updateServerFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
更新围栏参数说明:
参数 | 值类型 | 说明 |
---|---|---|
serviceID | String | 服务ID |
fenceID | String | 围栏ID |
serverFenceName | String | 围栏名称 |
type | String | 围栏类型(1001圆形 1002 多边形 1003 线行 1004 行政区域) |
coordType | String | 坐标类型(101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL) |
entityName | String | 需要监听的终端名称 |
denoiseAccuracy | String | 终端实体的定位精度大于该值的轨迹点不参与此围栏的计算(默认50)单位米 |
circleFenceParameter | object | 创建圆形围栏参数(type = 1001必传),详情见上表circleFenceParameter详解 |
polygonFenceParameter | Array | 创建多边形围栏参数(type = 1002必传),详情见上表polygonFenceParameter 详解 |
polylineFenceParameter | object | 创建线形围栏参数(type = 1003必传),详情见上表polylineFenceParameter 详解 |
districtFenceParameter | object | 创建行政区围栏参数(type = 1004必传)例:{keyWord:"浙江省杭州市西湖区"} |
- 删除服务端围栏
let options = {
serviceID: "237771",//服务ID
entityName: "大郎的西瓜",//实体名称
// fenceIDs:[]//需要删除的围栏ID,围栏ID的数组,若为空,则删除监控对象上的所有地理围栏
}
fenceMoudle.deleteServerFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 查询服务围栏
let options = {
serviceID: "237771",
coordType: "103",
entityName: "大郎的西瓜",
pageIndex: "1", //字符串
pageSize: "10" //字符串
}
fenceMoudle.queryServerFenceWith(options, res => {
})
- 查询实体与围栏的状态 (例:实体名称为”大郎的西瓜“是否在fenceID为38的围栏内)
let options = {
fenceIDs: ["38"],//围栏ID集合
entityName: "大郎的西瓜",
serviceID: "237771",
pageIndex: "1", //字符串
pageSize: "10" //字符串
}
fenceMoudle.queryServerFenceStatusWith(options, res => {
})
- 查询指定位置监控对象与围栏间的状态(例:查询”大郎的西瓜“假设在纬度为30.353807经度为120.300066这个位置与fenceID为38的围栏的关系)
let options = {
fenceIDs: ["38"],//围栏ID集合
lat: "30.353807",//指定位置纬度
lng: "120.300066",//指定位置精度
coordType: "103",//输出坐标类型
entityName: "大郎的西瓜",
serviceID: "237771",//服务ID
pageIndex: "1", //字符串---查询页码
pageSize: "10" //字符串----每页数据条数
}
fenceMoudle.queryServerFenceStatusByCustomLocationWith(options, res => {
console.log(res)
})
- 查询服务围栏警报信息
let options = {
fenceIDs: ["38"],
coordType: "103",
entityName: "大郎的西瓜",
serviceID: "237771",
startTime: "24", //开始时间 当前时间减去这个时间 单位小时
endTime: "0"
}
fenceMoudle.queryServerFenceHistoryAlarmWith(options, res => {
console.log(res)
})
- 查询指定服务下所有服务围栏警报信息--仅iOS有效
let options = {
coordType: "103",
serviceID: "237771",
startTime: "24", //开始时间 当前时间减去这个时间 单位小时
endTime: "0",
pageIndex: 0,
pageSize: 10
}
// 仅iOS有效
fenceMoudle.batchQueryServerFenceHistoryAlarmWith(options, res => {
console.log(res)
})
客户端围栏 参考示例demo:localFencel.vue文件
- 创建客户端围栏(客户端围栏只有圆形围栏)
let options = {
serviceID: "237771", //android独有参数
localFenceName: "第一个客户端围栏",
coordType: "103",
entityName: "大郎的西瓜",
denoiseAccuracy: "10", //定位精度大于10米的轨迹点都不会参与围栏计算
circleFenceParameter: {
lat: "30.446782",//圆形纬度
lng: "120.263684",//圆心精度
radius: "10"//半径
}
}
fenceMoudle.createLocalFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 更新客户端围栏
let options = {
serviceID: "237771", //android独有参数--Android必传
fenceID: "24", //必选
localFenceName: "第一个客户端围栏1111",
coordType: "103",
entityName: "大郎的西瓜",
denoiseAccuracy: "10", //定位精度大于10米的轨迹点都不会参与围栏计算
circleFenceParameter: { //可选
lat: "30.446782",//圆形纬度
lng: "120.263684",//圆心精度
radius: "10"//半径
}
}
fenceMoudle.updateLocalFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 删除客户端围栏
let options = {
serviceID: "237771", //android独有参数
entityName: "大郎的西瓜", //可选
// fenceIDs:[]//需要删除的围栏ID,围栏ID的数组,若为空,则删除监控对象上的所有地理围栏 可选
}
fenceMoudle.deleteLocalFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 查询客户端地理围栏
let options = {
serviceID: "237771", //android独有参数
fenceIDs: [],
entityName: "大郎的西瓜"
}
fenceMoudle.queryLocalFenceWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 查询实体与围栏的状态 (例:实体名称为”大郎的西瓜“是否在fenceID为38的围栏内)
let options = {
serviceID: "237771", //android独有参数
fenceIDs: [],
entityName: "大郎的西瓜"
}
fenceMoudle.queryLocalFenceStatusWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 查询指定位置监控对象与围栏间的状态(例:查询”大郎的西瓜“假设在纬度为30.353807经度为120.300066这个位置与fenceID为38的围栏的关系)
let options = {
serviceID: "237771", //android独有参数
fenceIDs: ["24"],
lat: "30.353807",
lng: "120.300066",
coordType: "103",
entityName: "大郎的西瓜",
}
fenceMoudle.queryLocalFenceStatusByCustomLocationWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
- 查询客户围栏警报信息
let options = {
serviceID: "237771", //android独有参数
fenceIDs: ["24"],
entityName: "大郎的西瓜",
startTime: "24", //开始时间 当前时间减去这个时间 单位小时
endTime: "0"
}
fenceMoudle.queryLocalFenceHistoryAlarmWith(options, res => {
uni.showToast({
title: res.message,
icon: "none"
})
})
轨迹分析(参考示例demo:trajectoryAnalysis.vue)
官方文档:https://lbs.baidu.com/faq/api?title=android-yingyan/guide/analysis、https://lbs.baidu.com/faq/api?title=android-yingyan/guide/analysis
轨迹分析提供停留点分析和驾驶行为分析功能:
-
停留点分析接口:一段轨迹中有多少个停留点、停留在何处、停留了多久停留点分析查询entity在指定时间段内的停留点。停留点判断规则为:在stay_radius半径范围内,滞留start_time以上,被认为是一次停留,将取一个代表性坐标作为停留点,其中 stay_radius 默认为20米,start_time 默认为 600秒
-
驾驶行为分析:一段轨迹中有多少个超速点、急加/减速点、急转弯点,其中超速点功能支持依据百度地图道路限速信息进行判断
- 停留点分析
analyzeStayPoint() {
let options = {
serviceID: "237771",
entityName: "大郎的西瓜",
startTime: "12", //开始时间 单位小时,这里的数值表示当前时间之前的几小时
endTime: "0", //开始时间 单位小时,这里的数值表示当前时间之前的几小时---比如获取一天前的数据 startTime传24 endTime传0
coordType: "103", ////101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL 输出坐标类型
stayRadius: "10", //停留半径 单位米 默认20米
stayTime: "60", //停留时间,单位秒 默认600s
processOption: { //纠偏设置 不需要纠偏 去掉该参数
denoise: false, //降噪
mapMatch: false, //绑路
vacuateGrade: "1", //抽稀 取值范围【1,5】
// 0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
radiusThreshold: "20",
// 查询纠偏后的实时位置时,指定被监控对象的交通方式、里程补偿的默认值为不补充,中断两点间距离不记入里程。1001:驾车 1002:骑行 1003:步行
transportMode: "1003"
}
}
fenceMoudle.analyzeStayPointWith(options, res => {
console.log(res)
})
停留点分析参数说明:
参数 | 值类型 | 说明 |
---|---|---|
serviceID | String | 服务ID |
entityName | String | 监听实体名称 |
startTime | String | 开始时间 单位小时,这里的数值表示当前时间之前的几小时 |
endTime | String | 结束时间这里的数值表示当前时间之前的几小时---比如获取一天前的数据 startTime传24 endTime传0 |
coordType | String | 输出坐标类型(101 WGS84 102:BGCJ02 103: BD09LL 不传默认BD09LL) |
stayRadius | String | 停留半径 单位米 默认20米 |
stayTime | String | 停留时间,单位秒 默认600s |
processOption | object | 纠偏配置(见上面通用参数说明-纠偏配置) |
- 驾驶分析
let options = {
serviceID: "237771",
entityName: "大郎的西瓜",
startTime: "12", //开始时间 单位小时,这里的数值表示当前时间之前的几小时
endTime: "0", //开始时间 单位小时,这里的数值表示当前时间之前的几小时---比如获取一天前的数据 startTime传24 endTime传0
coordType: "103", ////101 BTK_COORDTYPE_WGS84 102:BTK_COORDTYPE_GCJ02 不传默认BTK_COORDTYPE_BD09LL
processOption: { //纠偏设置 不需要纠偏 去掉该参数 可选
denoise: false, //降噪
mapMatch: false, //绑路
vacuateGrade: "1", //抽稀 取值范围【1,5】
// 0代表不过滤,100代表过滤掉定位精度大于100米的轨迹点。 例如:若只需保留 GPS 定位点,则建议设为:20;若需保留 GPS 和 Wi-Fi 定位点,去除基站定位点,则建议设为:100.纠偏时的定位精度过滤阀值,用于过滤掉定位精度较差的轨迹点。
radiusThreshold: "20"
},
thresholdOption: { //轨迹分析时需要的阈值,各阈值均有默认值。可选
speedingThreshold: 50, //固定限速值,可选。若设置为非0值,则以设置的数值为阈值,轨迹点速度超过该值则认为是超速;若不设置,或设置为0,则根据百度地图道路限速数据计算超速点。
harshAccelerationThreshold: 1.67, // 急加速的水平加速度阈值。单位:m^2/s,默认值:1.67,仅支持正数
harshBreakingThreshold: -1.67, //急减速的水平加速度阈值。单位:m^2/s,默认值:-1.67,仅支持负数
harshSteeringThreshold: 5 // 急转弯的向心加速度阈值 单位:m^2/s,默认值:5,仅支持正数
}
}
fenceMoudle.analyzeDrivingBehaviourWith(options, res => {
console.log(res)
})
驾驶分析参数说明:
参数 | 值类型 | 说明 |
---|---|---|
serviceID | String | 服务ID |
entityName | String | 监听实体名称 |
startTime | String | 开始时间 单位小时,这里的数值表示当前时间之前的几小时 |
endTime | String | 结束时间这里的数值表示当前时间之前的几小时---比如获取一天前的数据 startTime传24 endTime传0 |
coordType | String | 输出坐标类型(101 WGS84 102:BGCJ02 103: BD09LL 不传默认BD09LL) |
processOption | object | 纠偏配置(见上面通用参数说明-纠偏配置) |
thresholdOption | object | 轨迹分析时需要的阈值,各阈值均有默认值。可选 |
thresholdOption说明:
参数 | 值类型 | 说明 |
---|---|---|
speedingThreshold | int | 固定限速值,可选。若设置为非0值,则以设置的数值为阈值,轨迹点速度超过该值则认为是超速;若不设置,或设置为0,则根据百度地图道路限速数据计算超速点。 |
harshAccelerationThreshold | float | 急加速的水平加速度阈值。单位:m^2/s,默认值:1.67,仅支持正数(默认1.67) |
harshBreakingThreshold | float | 急减速的水平加速度阈值。单位:m^2/s,默认值:-1.67,仅支持负数(默认-1.67) |
harshSteeringThreshold | int | 急转弯的向心加速度阈值 单位:m^2/s,默认值:5,仅支持正数(默认5) |
- 驾驶分析返回数据结构
{
"average_speed": 57.060968094796,//获取平均时速
"tag": 555,
"harsh_breaking": [//急刹车集合
{
"acceleration":0,//获取实际加速度,单位:m/s^2
"end_speed":0,//获取减速后时速,单位:km/h
"speed":0,
"inital_speed":0,// 获取刹车前时速,单位:km/h
}],
"duration": 1079,//获取行程耗时,单位:秒
"message": "成功",
"harsh_steering": [{
"direction":0,
"radius":0,
"loc_time":0,
"centripetal_acceleration":0,// 获取向心加速度,单位:m/s^2
"turn_speed":0,//转向时速
"turn_type":"",//转向类型 左 右
"speed":0//速度
}],//急转弯集合
"harsh_acceleration_num": 0,//获取急加速次数
"max_speed": 92.39,//最大速度km/h
"start_point": {//起点
"loc_time": 1695285763,
"height": 0,
"direction": 0,
"longitude": 120.263724,
"speed": 0,
"latitude": 30.446801,
"radius": 0,
"coord_type": "bd09ll"
},
"code": "000000",
"distance": 17102.440159524,//获取行程里程,单位:米
"end_point": {//终点
"loc_time": 1695300633,//定位时间戳
"height": 0,
"direction": 0,
"longitude": 120.2997265806,
"speed": 0,
"latitude": 30.354376250714,
"radius": 0,
"coord_type": "bd09ll"
},
"harsh_acceleration": [{//急加速点集合
"acceleration":0,//获取实际加速度,单位:m/s^2
"end_speed":0,//获取加速后时速,单位:km/h
"speed":0,
"inital_speed":0,// 获取加速前时速,单位:km/h
}],
"speeding_num": 3,//获取超速次数
"harsh_breaking_num": 0,// 获取急刹车次数
"speeding": [//超速点集合
{
"speeding_distance": 8014.5127393949,//超速距离
"speeding_points": [
{
"loc_time": 1695299688,
"height": 0,
"longitude": 120.25855856578,
"direction": 0,
"speed": 0,
"actual_speed": 70.92,
"latitude": 30.436841623667,
"radius": 0,
"coord_type": "bd09ll",
"limit_speed": 0
},
{
"loc_time": 1695300043,
"height": 0,
"longitude": 120.31919218378,
"direction": 0,
"speed": 0,
"actual_speed": 67.35,
"latitude": 30.405198856104,
"radius": 0,
"coord_type": "bd09ll",
"limit_speed": 0
}
]
}
],
"harsh_steering_num": 0//获取急转弯次数
}