Openseadragon с переменной XML-документа вместо URL?

Как правильно открыть средство просмотра SeaDragon с прямыми XML-данными? Мне нужно знать, что я делаю неправильно здесь. У меня есть куча изображений DZI, размещенных в другом домене, которые мне нужно отобразить, но я не могу выполнить простой вызов OpenSeadragon() с соответствующими URL-адресами, потому что домен, в котором находятся изображения, не имеет «Access-Control-Allow». -Происхождение" заголовок. Таким образом, я настроил прокси-контроллер для получения данных XML и передачи их обратно на мою веб-страницу. Однако я не могу загрузить изображения с данными XML.

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

var viewer = OpenSeadragon({
    id: "openseadragon1",
    prefixUrl: "../../Scripts/openseadragon/images/", 
    tileSources: "https://familysearch.org/dz/v1/TH-1971-27860-10353-27/image.xml?ctx=CrxCtxPublicAccess&session" 
});

Теперь я пытаюсь отобразить изображение так же, как и с моим прокси-контроллером, извлекая XML и используя XML в моем вызове OpenSeadragon:

  var ajaxresult = $.ajax({
      url: "https://familysearch.org/dz/v1/TH-1971-27860-10353-27/image.xml?ctx=CrxCtxPublicAccess&session",
      type: 'get',
      success: function (data) {

          // data is an XMLdocument object

          var viewer = OpenSeadragon({
          id: "openseadragon1",
          prefixUrl: "../../Scripts/openseadragon/images/",
          tileSources: data
       });
   },
      error: function (jqXHR, textStatus, errorThrown) {
          alert(jqXHR.responseText || textStatus);
       }
  });

Я получаю пустое изображение, и моя консоль говорит, что не удалось загрузить каждую плитку. Я также попытался вставить xml непосредственно в поле tileSources в виде строки, например:

tileSources: '<?xml version="1.0" encoding="utf-8"?><Image TileSize="256" Overlap="1" Format="jpg" ServerFormat="Default" xmlns="http://schemas.microsoft.com/deepzoom/2009"> <Size Width="6233" Height="4683" /></Image>'

но это тоже не работает.

Что я здесь делаю неправильно?


person Erica Stockwell-Alpert    schedule 14.08.2014    source источник


Ответы (2)


Я нашел способ решить проблему. Поскольку мои изображения размещались в учетной записи S3, я обнаружил, что могу войти в учетную запись и добавить конфигурацию CORS в каждый из сегментов изображений. Таким образом, нет необходимости использовать Ajax для извлечения XML; как только я добавил CORS в ведра, я смог напрямую поместить URL-адреса в вызов OpenSeadragon.

person Erica Stockwell-Alpert    schedule 15.08.2014

К сожалению, OpenSeadragon еще не поддерживает прямую передачу XML; вам придется разбить информацию. Смотрите ответ здесь:

https://github.com/openseadragon/openseadragon/issues/460

person iangilman    schedule 15.08.2014