title: 实时轨迹
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() {@Overridepublic 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);}}@Overridepublic 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() {@Overridepublic 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);}}@Overridepublic void onCancelled(SyncError error) {Log.e(TAG, "onCancelled: "+error );}});
轨迹长度
PathSnapshot 的方法 getPathLength() 用于得到轨迹的长度,单位为米。
pathQuery.addPathQuerySingleListener(new PathQueryListener() {@Overridepublic void onLocationResult(PathSnapshot pathSnapshot) {if(pathSnapshot!=null) {double pathLength = pathSnapshot.getPathLength();Log.e(TAG, "pathlength: " + pathLength);}}@Overridepublic void onCancelled(SyncError error) {Log.e(TAG, "onCancelled: "+error );}});
