moveTrack实现了固定时间间隔上报定位信息的功能(安卓),iOS是以最小更新距离上报的。你可以配置请求地址和请求格式,目前支持移动端的json格式和标准的form(表单)格式提交。插件是以服务在形式挂在后台运行。
特别提醒:iOS在打包的时候,需要添加定位权限,要不然没效果。
iOS配置:
```js
<preference name="backgroundMode" value="location"/>
<feature name="moveTrack">
<param name="com.baidu.lbsapi.API_KEY" value="d709mnb5O5QghzTbuw8ZHMCWDRqqDTrG"/>
</feature>
开启定位服务,定时上报用户定位信息。
startLocation({params}, callback(ret))
url:
dataType:
coorType:
headers:
data:
openGPS:
scanSpan:
distanceFilter:
isNeedAddress:
prodName:
prefix:
dataType=json
prefix=user_loc的情况
{
"id": "123",
"user_loc": {
"time": "2017-06-08 10:22:27",
"latitude": "0.0000",
"lontitude": "0.0000"
}
}
dataType=key-value
prefix=user_loc. (注,user_loc后面带一个点) 的情况
id=123&user_loc.latitude=0.0000&user_loc.lontitude=0.0000
一个前辍加一个点就能变成对象,后台开发人员懂的啦。
ret:
{
code: -1 , //失败=-1,未启动或已断开=0,启动中=1,启动成功或已启动=2
msg : "" //提示信息
}
var moveTrack = api.require('moveTrack');
moveTrack.startLocation({
"url": "http://www.xxx_for_test.com"
}, function(ret){
api.alert({msg: JSON.stringify(ret)});
});
##提交的定位信息
{
"id": "123",
"name": "ken",
"location": {
"time": "2017-06-08 11:03:40",
"locType": 161,
"operationers": 2,
"city": "广州市",
"addr": "中国广东省广州市越秀区人民北路000号大院",
"street": "人民北路",
"speed": 0,
"country": "中国",
"countryCode": "0",
"radius": 40,
"description": "NetWork location successful!",
"locationDescribe": null,
"district": "越秀区",
"latitude": "1.1375",
"citycode": "257",
"lontitude": "2.2583"
}
}
iOS版本格式:
{
"userid" : "测试人员1号",
"location" : {
"province" : "广东省",
"locationDescribe" : "在广轻大厦附近",
"street" : "医国后街",
"countryCode" : "0",
"cityCode" : "257",
"latitude" : 23.14186878251656,
"city" : "广州市",
"district" : "越秀区",
"streetNumber" : "1号",
"country" : "中国",
"adCode" : "440104",
"lontitude" : 113.2643918942876
}
}
如果出现只提交了经纬度信息,其它信息为空可能原因有:
百度ak不对,或者配置错了(包名和签名都要对应)
因为在室内,gps定位不到具体位置。
网络不通或网络不好。(要借助网络去查询地址信息,比如你在哪个省,哪个市,哪条街)
上报的坐标位置偏僻,百度数据库解析不了。
Android系统、iOS系统
关闭定时上报定位信息的服务。
stopLocation();
var moveTrack = api.require('moveTrack');
moveTrack.stopLocation();
Android系统、iOS系统