Как добавить подписи к отдельным источникам листов в массиве с openseadragon? - PullRequest
0 голосов
/ 20 февраля 2020

У меня openseadragon хорошо работает для загрузки тайлов-источников из массива. Источники плиток извлекаются из таблицы mysql и выглядят следующим образом:

$tilesources = "/images/20190726075000_100/a20190726075000_100.dzi","/images/20190726075000_100/a20190726075000_100.dzi"

javascript:

(function() {
    const viewer = new OpenSeadragon.Viewer({
        id: "openseadragon-<?php echo $imgid; ?>",
        prefixUrl: '/assets/openseadragon/images/', // prefix for image control buttons folder
        tileSources: [ <?php echo "$tilesources"; ?> ],
        controlsFadeDelay: 60000,
        navigationControlAnchor: OpenSeadragon.ControlAnchor.BOTTOM_RIGHT, // controls position 
        navigationControlAnchor: OpenSeadragon.ControlAnchor.TOP_RIGHT, // controls position 
        homeFillsViewer: true,
        defaultZoomLevel: 1.2,
        zoomPerClick: 1.5,          
        sequenceMode: true,
        showFullPageControl: true, // works
      });
    })();

Я обернул его так, чтобы он отображался в fancybox. С помощью fancybox я добавил основной заголовок c, используя data-caption = ''. Это дает общую общую подпись для зрителя / окна просмотра.

Проблема в том, что каждый отдельный источник плиток имеет свою подпись. Я не вижу возможности в openseadragon добавлять подписи к каждой плитке.

Мне интересно, есть ли способ добавить обратный вызов (как бы вы его не называли) для динамического обновления заголовка fancybox при навигации по плиткам?

1 Ответ

0 голосов
/ 25 февраля 2020

Существует событие, когда пользователь переходит к новому изображению в режиме последовательности. Вы могли бы сделать что-то вроде этого:

var captions = [ <?php echo "$captions"; ?> ];

viewer.addHandler('page', function(event) {
  var caption = captions[event.page];
  // Update the caption element with the caption
});
...