Как уменьшить количество путевых кординат в респонсе DirectionService API

Рейтинг: 0Ответов: 1Опубликовано: 02.04.2023

Всем привет, как можно уменьшить количество путевых кординаты в результате DirectionService от google map? Когда я декодирую перебирая legs.steps.polyline то получаю огромный массив путевых координат(lat,lng). Мне нужно сократить эти точки. Я пробовал использовать simplify. Он удалял все путевые точки кроме первого и последнего, из-за этого маршрут строился некорректно

DirectionService.route received result huge waypoint coordinates(890)

Ответы

▲ 0

По умолчанию simplify использует минимальное расстояние = 1. Поэтому, когда разница между точками порядка градуса, все промежуточные точки удаляются. Поэтому:

        var x1 = 180,
                x2 = -180,
                y1 = 90,
                y2 = -90;

        for (var i = 0; i < coordinates.length; i++) {
            var prop = coordinates[i];
            x1 = Math.min(prop[0], x1);
            x2 = Math.max(prop[0], x2);
            y1 = Math.min(prop[1], y1);
            y2 = Math.max(prop[1], y2);
        }
        var l = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
        coordinates = simplify(coordinates, l / 100, true);

C константой 100 ещё можно поиграть.