1

ストレート XML データで SeaDragon ビューアーを開く正しい方法は何ですか? ここで何が間違っているのかを知る必要があります。表示する必要がある別のドメインでホストされている多数の DZI 画像がありますが、画像が存在するドメインに "Access-Control-Allow -Origin」ヘッダー。そのため、プロキシ コントローラを設定して XML データを取得し、それを Web ページに返します。ただし、画像を XML データと共に読み込むことができません。

問題をテストし、何をする必要があるかを理解するために、(別の Web サイトからの) 作業イメージを使用しています。次のコードを使用すると、画像が表示されます。

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

しかし、それもうまくいきません。

ここで何が間違っていますか?

4

2 に答える 2

1

問題を解決する方法を見つけました。イメージは S3 アカウントでホストされていたので、アカウントにログインして CORS 構成を各イメージ バケットに追加できることがわかりました。したがって、Ajax を使用して XML をプルする必要はありません。CORS をバケットに追加すると、URL を OpenSeadragon 呼び出しに直接入れることができました。

于 2014-08-15T16:49:43.170 に答える