moveTrack

来自于:开发者立即使用

startLocation stopLocation

moveTrack实现了固定时间间隔上报定位信息的功能(安卓),iOS是以最小更新距离上报的。你可以配置请求地址和请求格式,目前支持移动端的json格式和标准的form(表单)格式提交。模块是以服务在形式挂在后台运行。

特别提醒:iOS在打包的时候,需要添加定位权限,要不然没效果。

安卓配置

需要在config.xml里面填上meta-data,可以和百度地图共用一个value值,但一定要有<meta-data这个配置

  1. <meta-data name="com.baidu.lbsapi.API_KEY" value="百度ak" />

iOS配置:

  1. <preference name="backgroundMode" value="location"/>
  2. <feature name="moveTrack">
  3. <param name="com.baidu.lbsapi.API_KEY" value="d709mnb5O5QghzTbuw8ZHMCWDRqqDTrG"/>
  4. </feature>

startLocation

开启定位服务,定时上报用户定位信息。

startLocation({params}, callback(ret))

params

url:

  • 类型:字符串
  • 描述:(必填)上报服务器的请求地址。

dataType:

  • 类型:字符串
  • 描述:(可选项)post数据的格式,json表示以json字符串作为body提交,后台需要解析body获取数据,格式灵活,移动开发最爱。key-value是以标准的form(表单)格式提交,默认是json。

coorType:

  • 类型:字符串
  • 描述:(可选项)gcj02=国测局经纬度坐标系, bd09=百度墨卡托坐标系, bd09ll=百度经纬度坐标系, 默认是bd09ll, 建议不传值用默认的就好。

headers:

  • 类型:JSON 对象
  • 描述:(可选项)自定义上传header数据格式,根必须是对象{}, 不能是数组[], 一层键值对。{“key”:”value”,”key2”:”value2”}。可以通过这个参数上传数据到apicloud云 -> moveTrack如何上传数据到apicloud云?

data:

  • 类型:JSON 对象
  • 描述:(可选项)自定义上传数据格式,根必须是对象{}, 不能是数组[], 如果dataType=key-value, 则只支持一级对象(不支持对象套对象),dataType=json没有这个限制。

openGPS:

  • 类型:布尔
  • 描述:(可选项)是否开启GPS, 默认为true。(仅安卓有效)

scanSpan:

  • 类型:数字
  • 描述:(可选项)上报的时间间隔,单位为毫秒(ms),默认为3000ms。(仅安卓有效)

distanceFilter:

  • 类型:数字
  • 描述:(可选项)上报的最小距离,单位米(m),默认为1米,就是移动距离超过1米就提交一次。(仅iOS有效)

isNeedAddress:

  • 类型:布尔
  • 描述:(可选项)是否需要地址信息,默认为false。

prodName:

  • 类型:字符串
  • 描述:(可选项)产品名称,默认为apicloud,可以修改为自己APP的名称。(仅安卓有效)

prefix:

  • 类型:字符串
  • 描述:(可选项)字段名的前辍。
  1. dataType=json
  2. prefix=user_loc的情况
  3. {
  4. "id": "123",
  5. "user_loc": {
  6. "time": "2017-06-08 10:22:27",
  7. "latitude": "0.0000",
  8. "lontitude": "0.0000"
  9. }
  10. }
  11. dataType=key-value
  12. prefix=user_loc. (注,user_loc后面带一个点) 的情况
  13. id=123&user_loc.latitude=0.0000&user_loc.lontitude=0.0000
  14. 一个前辍加一个点就能变成对象,后台开发人员懂的啦。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: -1 , //失败=-1,未启动或已断开=0,启动中=1,启动成功或已启动=2
  3. msg : "" //提示信息
  4. }

示例代码

  1. var moveTrack = api.require('moveTrack');
  2. moveTrack.startLocation({
  3. "url": "http://www.xxx_for_test.com"
  4. }, function(ret){
  5. alert(JSON.stringify(ret));
  6. });

提交的定位信息

  1. {
  2. "id": "123",
  3. "name": "ken",
  4. "location": {
  5. "time": "2017-06-08 11:03:40",
  6. "locType": 161,
  7. "operationers": 2,
  8. "city": "广州市",
  9. "addr": "中国广东省广州市越秀区人民北路000号大院",
  10. "street": "人民北路",
  11. "speed": 0,
  12. "country": "中国",
  13. "countryCode": "0",
  14. "radius": 40,
  15. "description": "NetWork location successful!",
  16. "locationDescribe": null,
  17. "district": "越秀区",
  18. "latitude": "1.1375",
  19. "citycode": "257",
  20. "lontitude": "2.2583"
  21. }
  22. }

iOS版本格式:

  1. {
  2. "userid" : "测试人员1号",
  3. "location" : {
  4. "province" : "广东省",
  5. "locationDescribe" : "在广轻大厦附近",
  6. "street" : "医国后街",
  7. "countryCode" : "0",
  8. "cityCode" : "257",
  9. "latitude" : 23.14186878251656,
  10. "city" : "广州市",
  11. "district" : "越秀区",
  12. "streetNumber" : "1号",
  13. "country" : "中国",
  14. "adCode" : "440104",
  15. "lontitude" : 113.2643918942876
  16. }
  17. }

如果出现只提交了经纬度信息,其它信息为空可能原因有:

  • 百度ak不对,或者配置错了(包名和签名都要对应)

  • 因为在室内,gps定位不到具体位置。

  • 网络不通或网络不好。(要借助网络去查询地址信息,比如你在哪个省,哪个市,哪条街)

  • 上报的坐标位置偏僻,百度数据库解析不了。

可用性

Android系统、iOS系统

stopLocation

关闭定时上报定位信息的服务。

stopLocation();

示例代码

  1. var moveTrack = api.require('moveTrack');
  2. moveTrack.stopLocation();

可用性

Android系统、iOS系统