Клуб API Карт

Удалить метку через ее Balloon

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

Всем привет!

Есть проблема. Я создаю метку на карте.

selectPlace = (e)->

        coords = e.get('coordPosition')

        placemark = new ymaps.Placemark coords,

          {

            iconContent: "Выбирите адрес",

            hintContent: "Перетащите метку и кликните, чтобы узнать адрес и подтвердить выбор"

          },

          {

            draggable: "true"

            preset: "twirl#greenStretchyIcon"

            openEmptyBalloon: true

            balloonContentLayout: 'my#selectPlace'

          }

 

        placemark.events.add 'balloonopen', (e)->

          placemark.properties.set 'balloonContent', "Идет загрузка данных..."

          ymaps.geocode(placemark.geometry.getCoordinates(), results: 1)

            .then (res)->

                if res.geoObjects.get(0)

                  newContent = res.geoObjects.get(0).properties.get('name')

                else

                  newContent = 'Не удалось определить адрес.'

                placemark.properties.set 'balloonContent', newContent

        map.geoObjects.add placemark

        map.events.remove "click", selectPlace

      map.events.add "click", selectPlace

 

 

mySelectBalloonContentLayout = ymaps.templateLayoutFactory.createClass '<div>$[properties.balloonContent]</div><div><button id="confirmNewPlace">Ок</button><button id="cancelNewPlace">Отмена</button></div>',

          {

            build: ()->

              @constructor.superclass.build.call(this);

              $('#confirmNewPlace').bind 'click', @confirmNewPlace

              $('#cancelNewPlace').bind 'click', @cancelNewPlace

            clear: ()->

              $('#confirmNewPlace').unbind 'click', @confirmNewPlace

              $('#cancelNewPlace').unbind 'click', @cancelNewPlace

              @constructor.superclass.clear.call(this);

            confirmNewPlace: ()->

              console.log 'COORDS CONFIRMED'

            cancelNewPlace: (e)->

              console.log 'COORDS CANCELED'

          }

 

 А теперь вопрос: как мне нажатием кнопки в баллуне удалить эту метку?

2 комментария

Если забиндить this в cancelNewPlace на экземпляр макета,

то достать геообъект можно через this.getData().geoObject,

а его родителя через getParent(),

удалить с помощью remove(placemark);

placemark = @getData().geoObject

placemark.getParent().remove(placemark)

Большое спасибо! Работает.