Как нарисовать на карте в Yandex Maps ломаную линию с разрывами?

Как можно отобразить ломанную линию маршрута на карте, учитывая отсутствие данных о геопозиции в некоторых местах, и возможно ли отключить автоматическое заполнение пропущенных мест при отрисовке Polyline? Я не нашел этой возможности в документации API.
  • 4 января 2024 г. 19:28
Ответы на вопрос 2
В Yandex Maps API для отображения ломаных линий с разрывами вы можете использовать объект `Polyline`. Вам нужно будет предоставить массив координат, который будет включать в себя широту и долготу для каждой точки. Если у вас есть места с отсутствием данных о геопозиции, вам следует разделить вашу ломаную линию на несколько объектов `Polyline`, каждый из которых будет представлять собой отдельный непрерывный сегмент вашего маршрута.

Пример кода для создания ломаных линий с разрывами:

```javascript
ymaps.ready(init);

function init() {
    // Создаем карту.
    var myMap = new ymaps.Map("map", {
        center: [55.76, 37.64],
        zoom: 10
    });

    // Координаты первого сегмента ломаной линии.
    var firstSegmentCoordinates = [
        [55.76, 37.60],
        [55.76, 37.61],
        // ...
    ];

    // Координаты второго сегмента ломаной линии.
    var secondSegmentCoordinates = [
        [55.76, 37.65],
        [55.76, 37.66],
        // ...
    ];

    // Создаем ломаные линии с координатами первого и второго сегментов.
    var firstPolyline = new ymaps.Polyline(firstSegmentCoordinates, {}, {
        strokeColor: "#0000FF",
        strokeWidth: 4,
        strokeOpacity: 0.5
    });

    var secondPolyline = new ymaps.Polyline(secondSegmentCoordinates, {}, {
        strokeColor: "#0000FF",
        strokeWidth: 4,
        strokeOpacity: 0.5
    });

    // Добавляем полилинии на карту.
    myMap.geoObjects.add(firstPolyline);
    myMap.geoObjects.add(secondPolyline);
}
```

В приведенном выше примере два сегмента маршрута добавляются на карту в виде двух разных ломаных линий (`Polyline`). Исходя из ваших данных, вы должны будете определить, где необходимо разорвать линии, и создать отдельные объекты `Polyline` для каждого непрерывного участка маршрута.

Для того чтобы API не пыталось автоматически соединить разорванные сегменты линии, нужно просто не указывать их как один continuous массив координат, а использовать несколько отдельных массивов и объектов `Polyline`, как это показано в примере выше. 

Таким образом, когда данные геолокации отсутствуют, вы просто прерываете массив координат и начинаете новый массив для следующего сегмента линии. Yandex Maps API не будет пытаться автоматически соединить эти отдельные `Polyline` объекты.
По итогу получилось решить задачу сделав каждую из координат отдельным массивом вида [[latx, lonx], [latx, lonx]], по сути просто дублируя все значения. Минус только в том, что yandex map не съело такие мультиразмерные координаты для polyline. Пришлось ставить leaflet специально для этих целей. Там такое прокатило.
Похожие вопросы