Клуб API Карт

Перемещение метки API 2

Пост в архиве.

Доброго времени суток!

Подскажите пожалуйста как реализовать перемещение метки:


        ymaps.ready(init);

        function init () {
            var myMap = new ymaps.Map("map", {
                    center: [53.235967, 34.355252],
                    zoom: 15
                });
               
                 myMap.controls               
                .add('zoomControl')               
                .add('typeSelector')               
                .add('mapTools');
               
               
               
                    myMap.events.add('click', function (e) {
                    var coords = e.get('coordPosition');
                   if (!myPlacemark) {    // (1)
                    var myPlacemark = new ymaps.Placemark([coords[0].toPrecision(6),coords[1].toPrecision(6)], {
                    hintContent: '<span style=\"color:#000;\">Перетащите метку</span>'
                   }, {
                       preset: 'twirl#houseIcon', draggable: true
                    });

                        myMap.geoObjects.add(myPlacemark);  
                  
                    } else {
                    ... (тут как то двигаем метку) // (2)
                    }
                }

    );

        }

В настоящий момент этот код лепит метки по каждому нажатию, интересует 2 вещи:

1) как реализовать проверку есть ли метка на карте;

2) метод как передвинуть метку.

Заранее спасибо.

1 комментарий

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

var myCollection = new ymaps.GeoObjectCollection();
 myMap.geoObjects.add(myCollection);

myMap.events.add('click', function (e) {
var coords = e.get('coordPosition')
// проверяем есть ли метка в геоколлекции
if (myCollection.getLength()==0) { //если коллекция пуста, создаем метку в указанных координатах
var myPlacemark =.......
myCollection.add(myPlacemark) //добавляем метку в геоколлекцию
}else { //если коллекция не пуста, просто сдвигаем метку с помощью метода .geometry.setCoordinates()
myPlacemark.geometry.setCoordinates(coords)
}
}) //end "click"

.........