sinneren
@sinneren

Как правильно загружать ajax данные объекта objectManager по клику?

1. Я создаю темплейты для балунов и иконок.
2. Во время загрузки делаю ajax запрос, где получаю только id и координаты.
3. По клику на объект делаю другой запрос, где передаю id, получаю данные.
4. setObjectOptions в объекте создаёт options и туда распределяет данные, а у меня уже всё лежит в properties, поэтому я вынужден без обёрток передавать объекту проперти:
objectManager.objects._objectsById[objectId].properties = {
  address: json[objectId].name,
  pic: json[objectId].photo
}

Отсюда проблема: при клике открывается балун, но в нём пусто, чтобы отобразить данные, я должен закрыть балун и снова открыть его. То есть данные видимо не успевают подгрузиться, но setTimeout слишком костыльно и ненадёжно. Какое есть правильное решение, подскажите пожалуйста?

А заодно, если вдруг есть опыт, при boundschange у меня так же подгружаются объекты из этой области, но текущий раскрытый объект схлопывается, возможно ли как-то задать минимальный размер сдвига, чтобы только потом отрабатывали мои методы загрузки?
  • Вопрос задан
  • 319 просмотров
Решения вопроса 1
sinneren
@sinneren Автор вопроса
Какой я молодец, сам себе отвечу:
var object = objectManager.objects.getById(objectId);
            object.properties = {
              address: json[objectId].name,
              pic: json[objectId].photo
            }
            var objectState = objectManager.getObjectState(objectId);
            if (!objectState.isClustered) {
              objectManager.objects.balloon.open(objectId);
            }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы