Как связать добавляемые метки линиями?

98
10 июня 2021, 08:50

При нажатии кнопки в центре карты появляется метка, нужно, чтобы новые метки были соединены с последней добавленной и при этом их все можно было двигать.(был вопрос похожий, но я запутался, простите)

    function init() {
    var opt = {
        center: [55.76, 37.64],
        zoom: [11]
    };
    var myMap = new ymaps.Map("map", opt, {
        searchControlProvider: 'yandex#search'
    });
    var myPolyline = new ymaps.Polyline([
    ]);
    $("#button")
        .on('click', function () {    // Добавить точку
            let nameOfPoint = document.getElementById('point').value;
            var myPlacemark = new ymaps.Placemark(myMap.getCenter(), {}, {
                draggable: true,
                properties: {
                    // Контент метки.
                    hintContent: nameOfPoint
                }
            });
            myMap.geoObjects
                .add(myPlacemark);
            console.log(myPolyline);
            myPolyline.geometry._coordPath._coordinates.push(myPlacemark.geometry.getCoordinates());
                        // Добавляем линии на карту.
            myMap.geoObjects.add(myPolyline);
            myPlacemark.geometry.events.add('change', function (e) {
                let newCoords = e.get('newCoordinates');
                myPolyline.geometry.set(0, newCoords);
            });
        });
}
ymaps.ready(init);    //подключаем карту
Answer 1

Все, разобрался

   function init() {
    var opt = {
        center: [55.76, 37.64],
        zoom: [11]
    };
    var myMap = new ymaps.Map("map", opt, {
        searchControlProvider: 'yandex#search'
    });
    var myPolyline = new ymaps.Polyline([]);
    let pointNum = 0;
    $("#button")
        .on('click', function () {    // Добавить точку
            let nameOfPoint = document.getElementById('point').value;
            let i = pointNum;
            pointNum++;
            let point = new ymaps.Placemark(myMap.getCenter(),{hintContent: nameOfPoint}, {draggable: true });
            point.geometry.events.add('change', function (e) {
                let newCoords = e.get('newCoordinates');
                console.log(pointNum);
                myPolyline.geometry.set(i, newCoords);
            });
            console.log(point);
            myMap.geoObjects
                .add(point);

            myPolyline.geometry._coordPath._coordinates.push(myMap.getCenter());
                        // Добавляем линии на карту.
            myMap.geoObjects.add(myPolyline);
        });
}
ymaps.ready(init);    //подключаем карту
READ ALSO
Почему не работает event.preventDefault()

Почему не работает event.preventDefault()

Почему не работает eventpreventDefault();?

86
Нужна помощь по api kodexplorer

Нужна помощь по api kodexplorer

подскажите пожалуйста каким образом из javascript закрыть собственное окно в kodexplorer? Какую функцию top фрейма нужно вызвать и c какими параметрами?...

100
slick, несколько слайдеров с тем же классом?

slick, несколько слайдеров с тем же классом?

есть 6 табов, и в каждом табе свой слайдерСоздал одинаковую структуру и дал для каждого слайдер один и тот же класс который потом в js привязал...

120
Как создать дату в определенном формате JS

Как создать дату в определенном формате JS

new Date() возвращает дату в формате: день недели, месяц(словом), день, год, часы, минуты, секундыМожно ли как-то создавать сразу дату в определенном...

95