实时轨迹 编辑文档

1. 轨迹记录

startRecordingPath(key)方法用于记录指定 Key 的轨迹,并实时上传至云端,默认为 5 秒 上传一次。

location.startRecordingPath("key",provider);

设置上传频率

和位置同步一样,你可以根据时间或距离设置上传频率:

  • 根据时间间隔上传,最小间隔 1秒, 最大间隔 300 秒。

例如,每 2 秒 记录一个轨迹点:

AMapLocationProvider provider= location.initAMapLocationProviderWithTime(2000);
location.startRecordingPath("key",provider);
  • 根据距离间隔上传,最小间隔 0 米 (1 秒判断一次),最大间隔 500 米。

例如,每移动 10 米记录一个轨迹点:

AMapLocationProvider provider= location.initAMapLocationProviderWithDistance(10);
location.startRecordingPath("key",provider);

停止记录轨迹

stopRecordingPath(key)用于停止记录指定 Key 的轨迹。

location.stopRecordingPath(key);

2. 轨迹查询

实时轨迹监听

addPathQueryListener(listener) 用于查询实时轨迹,轨迹一旦发生变化,将会实时更新。

PathQuery pathQuery = location.getPathQuery("key");
pathQuery.addPathQueryListener(new PathQueryListener() {
@Override
public void onLocationResult(PathSnapshot pathSnapshot) {
if(pathSnapshot!=null) {
Position latestPoint = pathSnapshot.getLatestPoint();
Log.e(TAG, "latestPoint: " + latestPoint);
double pathLength = pathSnapshot.getPathLength();
Log.e(TAG, "pathlength: " + pathLength);
int size = pathSnapshot.getPoints().size();
Log.e(TAG, "size: " + size);
}
}
@Override
public void onCancelled(SyncError error) {
Log.e(TAG, "onCancelled: "+error );
}
});

location 还提供了不同的轨迹查询创建方法:

  • getPathQuery(String key)为全量查询,默认查询全部的记录。
  • getPathQueryWithStartTime(String key, Date starttime)该实例以startTime开始,查询一个key的路径记录。
  • getPathQueryWithEndTime(String key, Date endTime)该实例以endTime结束,查询一个key的路径记录。
  • getPathQuery(String key,Date starttime, Date endTime)在startTime与endTime之间,查询一个key的路径记录。

单次轨迹查询

addPathQuerySingleListener(listener) 用于查询指定时间范围内的轨迹记录。

pathQuery.addPathQuerySingleListener(new PathQueryListener() {
@Override
public void onLocationResult(PathSnapshot pathSnapshot) {
if(pathSnapshot!=null) {
Position latestPoint = pathSnapshot.getLatestPoint();
Log.e(TAG, "latestPoint: " + latestPoint);
double pathLength = pathSnapshot.getPathLength();
Log.e(TAG, "pathlength: " + pathLength);
int size = pathSnapshot.getPoints().size();
Log.e(TAG, "size: " + size);
}
}
@Override
public void onCancelled(SyncError error) {
Log.e(TAG, "onCancelled: "+error );
}
});

轨迹长度

PathSnapshot 的方法 getPathLength() 用于得到轨迹的长度,单位为米。

pathQuery.addPathQuerySingleListener(new PathQueryListener() {
@Override
public void onLocationResult(PathSnapshot pathSnapshot) {
if(pathSnapshot!=null) {
double pathLength = pathSnapshot.getPathLength();
Log.e(TAG, "pathlength: " + pathLength);
}
}
@Override
public void onCancelled(SyncError error) {
Log.e(TAG, "onCancelled: "+error );
}
});
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题
期待收到你的反馈,帮助我们改进文档。
参与调研