用XML文档变量代替URL的Openseadragon



用直接XML数据打开sedragon查看器的正确方法是什么?我得知道我哪里做错了。我有一堆DZI图像托管在另一个域,我需要显示,但我不能做一个简单的openseaddragon()调用适当的url,因为域的图像上没有"访问-控制-允许-起源"头。因此,我设置了一个代理控制器来检索XML数据并将其传递回我的web页面。但是,我无法让图像加载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在我的openseaddragon调用:

  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作为字符串直接粘贴到tile资源字段中,如下所示:

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>'

但这也不行

我在这里做错了什么?

我找到了解决这个问题的方法。因为我的映像托管在一个S3帐户上,所以我发现可以登录到该帐户并向每个映像桶添加CORS配置。因此,不需要使用Ajax来提取XML;一旦我将CORS添加到桶中,我就能够直接将url放入openseaddragon调用中。

遗憾的是,openseaddragon还不支持直接传递XML;你必须把信息分解。在这里查看答案:

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

最新更新