码迷,mamicode.com
首页 > 移动开发 > 详细

Android使用百度LBS SDK(五)优化轨迹平滑度

时间:2015-04-01 22:08:59      阅读:439      评论:0      收藏:0      [点我收藏+]

标签:android   百度地图   轨迹   优化   平滑   

同一数据,优化前后效果对比:
技术分享

优化算法:

public List<RoutePoint> optimizePoints(List<RoutePoint> inPoint) {
        int size = inPoint.size();
        List<RoutePoint> outPoint;

        int i;
        if (size < 5) {
            return inPoint;
        } else {
            // Latitude
            inPoint.get(0)
                    .setLat((3.0 * inPoint.get(0).getLat() + 2.0
                            * inPoint.get(1).getLat() + inPoint.get(2).getLat() - inPoint
                            .get(4).getLat()) / 5.0);
            inPoint.get(1)
                    .setLat((4.0 * inPoint.get(0).getLat() + 3.0
                            * inPoint.get(1).getLat() + 2
                            * inPoint.get(2).getLat() + inPoint.get(3).getLat()) / 10.0);

            inPoint.get(size - 2).setLat(
                    (4.0 * inPoint.get(size - 1).getLat() + 3.0
                            * inPoint.get(size - 2).getLat() + 2
                            * inPoint.get(size - 3).getLat() + inPoint.get(
                            size - 4).getLat()) / 10.0);
            inPoint.get(size - 1).setLat(
                    (3.0 * inPoint.get(size - 1).getLat() + 2.0
                            * inPoint.get(size - 2).getLat()
                            + inPoint.get(size - 3).getLat() - inPoint.get(
                            size - 5).getLat()) / 5.0);

            // Longitude
            inPoint.get(0)
                    .setLng((3.0 * inPoint.get(0).getLng() + 2.0
                            * inPoint.get(1).getLng() + inPoint.get(2).getLng() - inPoint
                            .get(4).getLng()) / 5.0);
            inPoint.get(1)
                    .setLng((4.0 * inPoint.get(0).getLng() + 3.0
                            * inPoint.get(1).getLng() + 2
                            * inPoint.get(2).getLng() + inPoint.get(3).getLng()) / 10.0);

            inPoint.get(size - 2).setLng(
                    (4.0 * inPoint.get(size - 1).getLng() + 3.0
                            * inPoint.get(size - 2).getLng() + 2
                            * inPoint.get(size - 3).getLng() + inPoint.get(
                            size - 4).getLng()) / 10.0);
            inPoint.get(size - 1).setLng(
                    (3.0 * inPoint.get(size - 1).getLng() + 2.0
                            * inPoint.get(size - 2).getLng()
                            + inPoint.get(size - 3).getLng() - inPoint.get(
                            size - 5).getLng()) / 5.0);
        }
        return inPoint;
    }

Android使用百度LBS SDK(五)优化轨迹平滑度

标签:android   百度地图   轨迹   优化   平滑   

原文地址:http://blog.csdn.net/zhoumushui/article/details/44810427

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!