使用直接XML数据打开SeaDragon查看器的正确方法是什么?我需要知道我在这里做错了什么。我有一堆DZI图像托管在我需要显示的另一个域上,但是我不能用适当的URL进行简单的OpenSeadragon()调用,因为图像所在的域没有“Access-Control-Allow” -Origin“标题。因此,我设置了一个代理控制器来检索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并在OpenSeadragon调用中使用XML:
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>'
但这也不起作用。
我在这里做错了什么?
答案 0 :(得分:0)
不幸的是,OpenSeadragon还不支持直接传递XML;你必须打破信息。请参阅答案:
答案 1 :(得分:0)
我找到了解决问题的方法。因为我的图像托管在S3帐户上,所以我发现我可以登录帐户并将CORS配置添加到每个图像存储桶中。因此,无需使用Ajax来提取XML;一旦我将CORS添加到桶中,我就可以直接将URL放入OpenSeadragon调用中。