package com.ruoyi.bst.locationLog.utils;

import java.math.BigDecimal;
import java.util.List;

import com.ruoyi.bst.locationLog.domain.vo.LocationLogPositionVO;
import com.ruoyi.common.utils.collection.CollectionUtils;
import com.ruoyi.common.utils.map.GeoUtils;

public class LocationLogUtil {
    

    /**
     * 计算轨迹距离
     * @param positionList 位置列表
     * @return 距离
     */
    public static BigDecimal calcDistance(List<LocationLogPositionVO> positionList) {
        if (CollectionUtils.isEmptyElement(positionList)) {
            return BigDecimal.ZERO;
        }
        // 将位置列表转换为轨迹列表
        double[][] track = positionList.stream()
            .map(position -> new double[] { position.getLongitude().doubleValue(), position.getLatitude().doubleValue() })
            .toArray(double[][]::new);
        // 计算轨迹距离
        double distance = GeoUtils.calculateTotalDistance(track);
        return BigDecimal.valueOf(distance);
    }
}
