Finesse
@Finesse

Как изменить текст балуна метки, добавленной через ObjectManager (API Яндекс Карт)?

У меня есть карта с множеством точек на ней. Точки добавлены с помощью ObjectManager:

const map = new ymaps.Map(document.getElementById('map'), {
    center: [42, 54],
    zoom: 6
});
const objectManager = new ymaps.ObjectManager({
    clusterize: true
});
objectManager.add({
    type: 'FeatureCollection',
    features: [
        {
            type: 'Feature',
            id: 1,
            geometry: {
                type: 'Point',
                coordinates: [43, 54]
            },
            properties: {
                balloonContentBody: 'Загрузка...'
            }
        },
        {
            type: 'Feature',
            id: 2,
            geometry: {
                type: 'Point',
                coordinates: [41, 55]
            },
            properties: {
                balloonContentBody: 'Загрузка...'
            }
        }
        // ...
    ]
});
map.geoObjects.add(objectManager);

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

Я пробовал так, получилось только изменить цвет метки:

objectManager.objects.setObjectOptions(1, {
    preset: 'islands#redIcon',
    balloonContentBody: 'Загружено (тут полезная информация)',
    properties: {
        balloonContentBody: 'Загружено (тут полезная информация)'
    }
});

Пример на CodePen
  • Вопрос задан
  • 1471 просмотр
Решения вопроса 1
Finesse
@Finesse Автор вопроса
objectManager.objects.getById(1).properties.balloonContentBody = 'Загружено (тут полезная информация)';

Где 1 — id нужной точки. Будьте осторожны, objectManager.objects.getById может вернуть null. Демо на CodePen.

У способа есть недостаток. Содержимое всплывающего окна не изменится, пока оно открыто. Новый текст применяется перед открытием балуна.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-virt
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/refe...

В описание метода add есть пример.

Процитирую данный пример:
var myObjectManager = new ymaps.ObjectManager({ clusterize: true }),
    currentId = 0;

// Добавление единичного объекта.
myObjectManager.add({
    type: 'Feature',
    id: currentId++,
    geometry: {
        type: 'Point',
        coordinates: [56.23, 34.79]
    },
    properties: {
        hintContent: 'Текст всплывающей подсказки',
        balloonContent: 'Содержимое балуна'
    }
});
map.geoObjects.add(objectManager);


Тобиш Вам нужно в Ваш проперти добавить balloonContent
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект
24 нояб. 2024, в 00:04
5000 руб./за проект