Клуб API Карт

как из балуна получить: а) породивший его Placemark б) все Placemarks на карте?

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

 

var MyBalloonLayout = ymaps.templateLayoutFactory.createClass('шаблон', {
        build: function() {
            this.constructor.superclass.build.call(this);
            // Как:
            // 1. placemark-родитель?
            // 2. Все placemark на карте?
        },
        clear: ...
});

 

7 комментариев

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

this.getData().geoObject

this.getData().geoObject.getParent().each(...)

Как всё просто...

А как все placemarks удалить?

this.getData().geoObject.getParent().removeAll()

Ух! Прям и правда все.

А как их по одной удалять? (требуется их перебрать и удалить все, кроме текущей)

Очень странный кейс.

Можно попробовать так:

var data = this.getData();

var geoObject = data.geoObject;

var collection = geoObject.getParent();

ymaps.geoQuery(collection).search(function (item) {

    return item != geoObject;

}).removeFrom(collection)

Да, так сработало, большое спасибо.

Кейс - да, необычный: карта расположена на странице товара в интернет-магазине, на ней показываются розничные точки, в которых можно оформить резерв товара. В балуне содержится форма, которую человек должен заполнить, чтобы оформить резерв (оставить свой телефон). При успешном заполнении формы все остальные магазины с карты убираются, остается только один - в котором резерв.

А нет ли у самого placemark метода, который позволяет его удалить?
Типа Placemark.remove() ?