0

ol-cesium を使用してアプリをビルドすると、WMS によってはクロスオリジン エラーが発生する場合があります。

"Image from origin 'http://www.ifremer.fr' has been blocked
from loading by Cross-Origin Resource Sharing policy: 
No 'Access-Control-Allow-Origin' header is present on 
the requested resource. Origin 'http://localhost:8080' 
is therefore not allowed access"

使用する WMS に CORS ヘッダーを設定する機能がありません (ここで提案されているようにhttps://github.com/openlayers/ol3-cesium/issues/127 )。

Cesium レベルでプロキシを設定できるようです ( https://cesiumjs.org/2013/01/04/Cesium-Imagery-Layers-Tutorial/を参照)。

セシウムレベルで設定するようにOLレベルで設定することはできますか?はいの場合、どのように?

4

6 に答える 6

1

https://github.com/openlayers/ol3-cesium/pull/358を使用すると、レイヤーのソースで olcs.proxy プロパティを設定できるようになりました。例えば:

source.set('olcs.proxy', '/myproxy/url');
于 2016-06-09T11:32:32.827 に答える
0

私はCesiumを使用しておらず、ThreeJSだけを使用していますが、画像をコピーするトリックを少し使わなくても同じCORSの問題が発生します。これは私のために働く -

function loadWmsImage( url, params, cb ){
  var tmpImage = new Image();
  var wmsPng = url + jQuery.param( params );
  tmpImage.onload = function(){
    var canv = document.createElement('canvas');
    var ctx = canv.getContext('2d');
    canv.width = this.width;
    canv.height = this.height;
    ctx.drawImage(this, 0, 0);
    cb(canv.toDataURL());
  }
  tmpImage.crossOrigin = 'anonymous';
  tmpImage.src =  wmsPng;
}

loadWmsImage( htMapUrl, htMapParams,
  function(img){
    customUniforms.bumpTexture.value = 
      new THREE.ImageUtils.loadTexture(img);
  });
于 2015-07-25T11:01:11.447 に答える
0

OL3-Cesium の初期化コードを見ると、OL レベルでプロキシを適用する機能が組み込まれていません。

作成したレイヤーの imageryProvider 設定をコピーして、新しいレイヤーにプロキシを含めることができます。

私はこれを試していないので、うまくいくかどうかはわかりませんが、OL3 がこれを修正するアップデートをすぐにリリースする予定がない場合は、試してみる価値があります。

于 2015-06-10T04:35:56.303 に答える