Клуб API Карт

Проблема с добавлением меток при нажатой кнопке

whomade
7 июня 2012, 19:58

Есть кнопка:

 

 

var newMarker =  new ymaps.control.Button({data: { content: 'Добавить маркер' }});

 

Добавляю ее на карту:

myMap.controls.add(new ymaps.control.ToolBar([newMarker]));

 

Есть код для добавление метки на карту:

 

            myMap.events.add("click",

                function(e) {

                   var myPlacemark = new ymaps.Placemark(

                        e.get("coordPosition")

                    );

                    myMap.geoObjects.add(myPlacemark);

                }

            );

 

Как сделать, чтобы метку можно было добавлять только при нажатой кнопке "newMarker"??? Использую API 2.

В API 1 этот код выглядел бы так:

 

YMaps.Events.observe(newMarker, newMarker.Events.Select, function () { тут код добавления метки }


А как сделать в API 2 не знаю.

 

6 комментариев
Подписаться на комментарии к посту

Можно в обработчике select-а на кнопке обновлять глобальный флаг 

var canAddPlacemark = false;
newMarker.events.add('select', function (e) {    canAddPlacemark = true;});

myMap.events.add("click", function(e) {

    if(canAddPlacemark) {

        var myPlacemark = new ymaps.Placemark(e.get("coordPosition"));

        myMap.geoObjects.add(myPlacemark);

    }

});

 

Спасибо. А теперь в продолжение у меня возник еще один вопрос.

 

У меня есть кнопки управления + моя кнопка:

 

var newMarker =  new ymaps.control.Button({data: { content: 'Добавить маркер' }});

 

myMap.controls

        .add('zoomControl')

        .add('mapTools')

        .add(new ymaps.control.ToolBar([newMarker]));

 

Нужно сделать, чтобы при нажатии на стандартную кнопку управления моя кнопка становилась неактивной. Приведите, пожалуйста, пример.

добавьте все контролы в один тулбар

тогда все кнопки в нем будут сами deselect-иться

Вот как раз это у меня и не получается сделать... Напишите, пожалуйста, пример.

myMap.controls

        .add(new ymaps.control.ToolBar([

             newMarker,

             new ymaps.control.ZoomControl()

         ]));

сделал так, но все по прежнему: если нажата моя кнопка, а после этого нажимаю на стандартную, то моя кнопка по-прежнему остается активной.
Есть какой-то другой способ это сделать?