产品服务
解决方案
文档与支持
定价

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
轨迹分析
Android
iOS
https://mapopen-website-wiki.cdn.bcebos.com/demos/andDemos/yingyan/轨迹分析.mp4
扫码体验
使用产品
下载源码
核心接口
接口
描述
queryHistoryTrack(HistoryTrackRequest request, OnTrackListener listener)
查询历史轨迹
LBSTraceClient
queryStayPoint(StayPointRequest request,OnAnalysisListener listener)
查询停留点
queryDrivingBehavior(DrivingBehaviorRequest request,OnAnalysisListener listener)
查询操作行为
setTransportMode(TransportMode transportMode)
设置交通方式, V3.1.0版本(包括)后支持auto
setNeedDenoise(boolean needDenoise)
设置去噪
ProcessOption
setNeedVacuate(boolean needVacuate)
设置抽稀,仅在查询历史轨迹时有效
setNeedMapMatch(boolean needMapMatch)
设置绑路,默认不需要
setRadiusThreshold(int radiusThreshold)
设置精度过滤,默认不需要
setServiceId(long serviceId)
设置鹰眼服务ID
setProcessed(boolean isProcessed)
设置是否返回纠偏后轨迹,关闭轨迹纠偏,返回原始轨迹。
setProcessOption(ProcessOption processOption)
设置纠偏选项
HistoryTrackRequest
setSupplementMode(SupplementMode supplementMode)
设置里程补偿方式,默认不补充
setEntityName(String entityName)
设置entity标识
setStartTime(long startTime)
设置起始时间
setEndTime(long endTime)
设置结束时间
setServiceId(long serviceId)
设置鹰眼服务ID
setEntityName(String entityName)
设置entity标识
setStartTime(long startTime)
设置起始时间
StayPointRequest
setEndTime(long endTime)
设置结束时间
setProcessOption(ProcessOption processOption)
设置纠偏选项
setStayTime(int stayTime)
设置停留时间
setCoordTypeOutput(CoordType type)
设置输出坐标类型
setServiceId(long serviceId)
设置鹰眼服务ID
setEntityName(String entityName)
设置entity标识
setStartTime(long startTime)
设置起始时间
DrivingBehaviorRequest
setEndTime(long endTime)
设置结束时间
setProcessOption(ProcessOption processOption)
设置纠偏选项
setCoordTypeOutput(CoordType type)
设置输出坐标类型
setThresholdOption(ThresholdOption option)
设置限速值
核心代码
1.发起检索请求
JAVA
/**
 * 查询轨迹的开始时间
 */
 private long startTime = CommonUtil.getCurrentTime();
               
/**
 * 查询轨迹的结束时间
 */
 private long endTime = CommonUtil.getCurrentTime();
// 停留时长
int stayTime = 100;              
/**
 * 历史轨迹请求
 */
 HistoryTrackRequest historyTrackRequest = new HistoryTrackRequest();
/**
 * 创建纠偏选项实例
 */
ProcessOption processOption = new ProcessOption();
/**
 * 轨迹排序规则
 */
private SortType sortType = SortType.asc;
// 创建停留点查询请求实例
StayPointRequest stayPointRequest = new StayPointRequest(trackApp.getTag(), trackApp.serviceId, trackApp.entityName,startTime, endTime, stayTime, processOption, CoordType.bd09ll);
// 设置限速值
ThresholdOption thresholdOption = new ThresholdOption();
// 创建行为查询请求实例
DrivingBehaviorRequest drivingBehaviorRequest = new DrivingBehaviorRequest(trackApp.getTag(), trackApp.serviceId, trackApp.entityName,startTime, endTime, thresholdOption, processOption, CoordType.bd09ll);
// 停留点查询
trackApp.mClient.queryStayPoint(stayPointRequest, mAnalysisListener);
// 行为查询
trackApp.mClient.queryDrivingBehavior(drivingBehaviorRequest, mAnalysisListener);

// 创建历史轨迹请求实例
trackApp.initRequest(historyTrackRequest);
historyTrackRequest.setEntityName(trackApp.entityName);
historyTrackRequest.setStartTime(startTime);
historyTrackRequest.setEndTime(endTime);
historyTrackRequest.setPageIndex(pageIndex);
historyTrackRequest.setPageSize(Constants.PAGE_SIZE);
trackApp.mClient.queryHistoryTrack(historyTrackRequest, mTrackListener);
复制
深色
复制成功
2.检索结果处理
JAVA
// 历史轨迹回调
mTrackListener = new OnTrackListener() {
    @Override
    public void onHistoryTrackCallback(HistoryTrackResponse response) {
        int total = response.getTotal();
        if (StatusCodes.SUCCESS!= response.getStatus()) {
            Toast.makeText(TrackAnalyseActivity.this, response.getMessage(), Toast.LENGTH_SHORT).show();
        } else if (0 == total) {
            Toast.makeText(TrackAnalyseActivity.this, getString(R.string.no_track_data), Toast.LENGTH_SHORT).show();
        } else {
            List<TrackPoint> points = response.getTrackPoints();
            if (null!= points) {
                for (TrackPoint trackPoint: points) {
                    if (!CommonUtil.isZeroPoint(trackPoint.getLocation().getLatitude(),
                            trackPoint.getLocation().getLongitude())) {
                        trackPoints.add(MapUtil.convertTrace2Map(trackPoint.getLocation()));
                    }
                }
            }
        }

        if (total > Constants.PAGE_SIZE * pageIndex) {
            historyTrackRequest.setPageIndex(++pageIndex);
            queryHistoryTrack();
        } else {
            mMapUtil.drawHistoryTrackOrMarker(trackPoints, sortType);
        }
    }

    @Override
    public void onDistanceCallback(DistanceResponse response) {
        super.onDistanceCallback(response);
    }

    @Override
    public void onLatestPointCallback(LatestPointResponse response) {
        super.onLatestPointCallback(response);
    }
};
// 初始化停留点监听
mAnalysisListener = new OnAnalysisListener() {
    @Override
    public void onStayPointCallback(StayPointResponse response) {
        // 停留点分析回调
        if (StatusCodes.SUCCESS!= response.getStatus()) {
            Toast.makeText(TrackAnalyseActivity.this, response.getMessage(), Toast.LENGTH_SHORT).show();
            return;
        }
        tvStay.setText(response.getStayPointNum() + "");
        if (response.getStayPointNum() > 0) {
            tvStayStr.setTextColor(getResources().getColor(R.color.blue));
        } else {
            tvStayStr.setTextColor(getResources().getColor(R.color.black));
        }
        if (0 == response.getStayPointNum()) {
            return;
        }

        stayPoints.addAll(response.getStayPoints());
        handleOverlays(stayPointMarkers, stayPoints);

    }

    @Override
    public void onDrivingBehaviorCallback(DrivingBehaviorResponse response) {
        // 驾驶行为分析回调
        if (StatusCodes.SUCCESS!= response.getStatus()) {
            Toast.makeText(TrackAnalyseActivity.this, response.getMessage(), Toast.LENGTH_SHORT).show();
            return;
        }

        tvSpeeding.setText(response.getSpeedingNum() + "");
        tvRapidShift.setText(response.getHarshAccelerationNum() + "");
        tvSharpTurn.setText(response.getHarshSteeringNum() + "");

        if (response.getSpeedingNum() > 0) {
            tvSpeedingStr.setTextColor(getResources().getColor(R.color.blue));
        } else {
            tvSpeedingStr.setTextColor(getResources().getColor(R.color.black));
        }
        if (response.getHarshAccelerationNum() > 0) {
            tvRapidShiftStr.setTextColor(getResources().getColor(R.color.blue));
        } else {
            tvRapidShiftStr.setTextColor(getResources().getColor(R.color.black));
        }
        if (response.getHarshSteeringNum() > 0) {
            tvSharpTurnStr.setTextColor(getResources().getColor(R.color.blue));
        } else {
            tvSharpTurnStr.setTextColor(getResources().getColor(R.color.black));
        }

        if (0 == response.getSpeedingNum() && 0 == response.getHarshAccelerationNum()
                && 0 == response.getHarshBreakingNum() && 0 == response.getHarshSteeringNum()) {
            return;
        }

        List<SpeedingInfo> speedingInfos = response.getSpeedings();
        for (SpeedingInfo info: speedingInfos) {
            speedingPoints.addAll(info.getPoints());
        }
        harshAccelPoints.addAll(response.getHarshAccelerationPoints());
        harshSteeringPoints.addAll(response.getHarshSteeringPoints());

        handleOverlays(speedingMarkers, speedingPoints);
        handleOverlays(harshAccelMarkers, harshAccelPoints);
        handleOverlays(harshSteeringMarkers, harshSteeringPoints);

    }
};


                
复制
深色
复制成功
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消