nepster-web
@nepster-web

Яндекс Api. Как в ObjectManager кастомизировать balloon?

Есть следующий код:
ymaps.ready(init);

            function init() {
                var myMap = new ymaps.Map('map', {
                            center: [55.76, 37.64],
                            zoom: 10
                        }, {
                            searchControlProvider: 'yandex#search'
                        }),
                        objectManager = new ymaps.ObjectManager({
                            clusterize: true,
                            gridSize: 32
                        });

                myMap.geoObjects.add(objectManager);

                $.ajax({
                     url: "/geo/map"
                 }).done(function(data) {
                    objectManager.add(data);
                 });
            }


Результат /geo/map примерно вот такой объект:
{
    "type": "FeatureCollection",
        "features": [
    {
        "type": "Feature",
        "id": 2,
        "geometry": {"type": "Point", "coordinates": [55.763338, 37.565466]},
        "properties": {
            "balloonContent": '<div class="balloon-view">--</div>',
            "hintContent": "Текст подсказки",
        }
    }
]
};


Проблема следующая, для каждого объекта на карте нужно иметь возможность указывать свое изображение точки. Было бы не плохо задать его как-то в properties или где-то там. Проблем в том, что в доках я не смог найти упоминания для изменения balloon, кроме общего.

objectManager.objects.options.set('preset', 'islands#greenDotIcon');
      objectManager.clusters.options.set('preset', 'islands#greenClusterIcons');


Тут две проблемы:
- походу нельзя указать свою картинку
- применяется сразу ко всем точкам

Еще гуглил в сторону объектов стилей для balloon, но перебирать в цикле, собирать новые объекты и отдавать карте походу не кошерно. ПОдскажите пожалуйста как в моем случае, получая данные из json, кастомизировать определенные balloon, а точнее передать свойства стилей для них ?
  • Вопрос задан
  • 1814 просмотров
Решения вопроса 1
Проблема следующая, для каждого объекта на карте нужно иметь возможность указывать свое изображение точки. Было бы не плохо задать его как-то в properties или где-то там. Проблем в том, что в доках я не смог найти упоминания для изменения balloon, кроме общего.

1. Вы путаете pin и balloon:
pin - иконка на карте
balloon - попап, вылезающий при нажатии на pin
Что касается pin'а:
В feature.options можно указать необходимые стили для конктреного feature. И картинку свою тоже можно. Только не забудьте в этом случае ещё и форму (iconShape) указать.
Что касается balloon'а: он для всей коллекции один, нужно при нажатии на pin обновлять его содержимое ( посмотрите пример в песочнице с кастомным балуном, там все более-менее понятно).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы