轨迹围栏 SDK 介绍
主要为追踪管理的车辆、人员等。通过在定位轨迹与电子围栏系统中创建专题,基于轨迹围栏SDK,开发者管理待监测的轨迹,可应用于车队管理、人员管理等领域,实现轨迹追踪。
1 快速入门
- 下载 SDK 引入
下载SDK http://ip:port/sdk/geoctrack.js
- index.html 中
const GeocDzwl= new GeocTrack({ak:"","ywid":"","device_type":"",instance:"wx"})
各 h5 开发平台入口文件引入
/* 使用CommonJs规范引入 */
const GeocTrack = require("geoctrack")
/* 使用ES6模块引入 */
import GeocTrack from 'geoctrack';
注意:各小程序原生及其它开发平台需要在其对应的入口文件引入。
此专题的 ak 密钥:111222333
代码示例:
// 方式一
const geocTrack= new GeocTrack({ak:"111222333","ywid":"","device_type":""})
geocTrack.start();
// 方式二
const geocTrack= new GeocTrack()
geocTrack.setAk('111222333');//设置专题AK
geocTrack.setDeviceType(deviceType);//设置设备类型
geocTrack.setYwid('')//设置业务ID
geocTrack.start();//开始跟踪
// API 更多api详见接口文档
geocTrack.getAK();//获取专题AK
geocTrack.stop();//终止跟踪
...
2 sdk 使用说明
2.1 前提条件
参数说明 | 是否必须 | 备注 |
---|---|---|
ak | 是 | 专题 ak,管理端专题中获取 |
ywid | 是 | 自动注册设备使用,生成唯一设备码 |
device_type | 否 | 设备类型值 |
fieldone | 非必须(可选) | 预留字段 |
fieldtwo | 非必须(可选) | 预留字段 |
fieldthree | 非必须(可选) | 预留字段 |
type | 非必须 | 开发类型 h5/微信/支付宝/钉钉/... [默认 h5] |
instance | 非 h5 时必须 | Eg: wx |
2.2 webview(小程序)使用
接口总览:
接口 | api 名称 | 说明 |
---|---|---|
1.生成设备唯一码(废弃) | getDeviceid() | 目前 js 无法获取设备唯一码,注册设备时直接传入 |
2.获取设备唯一码 | getDeviceid($ywid) | 获取通过注册设备的业务 id 生成的设备唯一码 |
3.获取当前设备定位轨迹 | getPositions($starttime?,$endtime?) |
1.获取设备唯一码 (通过唯一码 id)
设备唯一码:引入 sdk 后自动生成,通过传入的专题的 ak 与业务 id(接入 sdk 传入) 使用 SHA-256 生成哈希值。
node 版
// input = ak + ywid
function generateHash(input) {
// 创建一个名为sha256的哈希对象
var hash = crypto.createHash('sha256');
// 更新哈希对象的输入数据
hash.update(input);
// 生成哈希值
var hashedValue = hash.digest('hex'); // 以16进制字符串的形式返回哈希值
return hashedValue;
}
2.3 浏览器 h5 使用
async function generateHash(input) {
const inputArray = new TextEncoder().encode(input);
// 使用SHA-256算法加密
const hashArrayBuffer = await crypto.subtle.digest('SHA-256', inputArray).catch(error => console.error(error));;
// 将加密后的ArrayBuffer转换为Uint8Array
const hashArray = new Uint8Array(hashArrayBuffer);
// 将Uint8Array转换为16进制字符串
const hashHex = Array.prototype.map.call(hashArray, x => ('00' + x.toString(16)).slice(-2)).join('');
console.log(hashHex);
// 输出加密后的SHA-256值
return hashHex;
}
获取当前设备定位轨迹:
1.使用 fingerprintjs2
js
<script src="./fingerprintjs2.js" ></script>
<script>
window.onload=function (){
if (window.requestIdleCallback) {
requestIdleCallback(function () {
Fingerprint2.get(function (components) {
const values = components.map(component => component.value); // 配置的值的数组
const murmur = Fingerprint2.x64hash128(values.join(''), 31); // 生成浏览器指纹
console.log(components);
console.log(values);
console.log(murmur);
// alert('browserId:'+murmur);
var div=document.createElement("div");
div.innerText = murmur+'\r\n'+JSON.stringify(components);
//把div元素节点添加到body元素节点中成为其子节点,但是放在body的现有子节点的最后
document.body.appendChild(div);
})
})
} else {
setTimeout(function () {
Fingerprint2.get(function (components) {
console.log(components) // an array of components: {key: ..., value: ...}
})
}, 500)
}
}
</script>