6

アプリケーションで使用するマップ タイルを提供するために、独自の OSM サーバーを設定しました。アプリケーションでは OpenLayers を使用していますが、slippymap からアプリケーションにコードを移植すると、奇妙な問題が発生しました。基本的に同じコードを使用し、ローカル タイルの場合はタイル サーバーの URL を設定します。

問題は、ローカル レイヤーに切り替えると、マップのピンクのレイヤーしか表示されませんが、イメージ タグの src 属性が実際のタイルをロードすることです。Firebug でピンクのレイヤーを削除しようとしましたが、その後ろに画像がありません。img タグの src 属性から URL をコピーすると、タイルが画像として開きます。

これを Chrome で試したところ、IE 7,8,9 でもローカル レイヤーが機能しています。問題は FF のみであり、OpenLayers で何かが疑われますが、何が原因かはわかりません。Mapnik レイヤーは機能しており、すべてのブラウザーでタイルを表示しています。ちなみにHTML5を使用しています。

アイデアやヒントをいただければ幸いです。

4

2 に答える 2

11

サーバー側で CORS ヘッダーを追加する必要のない別のソリューションがあります。次のように、レイヤー構成に「tileOptions」オプションを提供する必要があります。

var layer = new OpenLayers.Layer.OSM("layer name", [urls], {
    "tileOptions": {
        "crossOriginKeyword": null
    }
});

Layer.OSMTile.Imageの OpenLayers のドキュメントでは、これを行う方法が説明されていますが、デフォルトが Firefox で問題を引き起こす可能性があるという事実については言及されていません。

于 2012-07-12T18:39:24.247 に答える
4

うーん、ほぼ正しいと思います。これは、提供されたリソースのクロス ドメイン リクエストを有効にする Apache ヘッダー設定でした。好奇心旺盛なhttps://developer.mozilla.org/en/http_access_controlの詳細はこちら

これはヘッダー設定です。これを <Directory>、<Location> または .htaccess ファイルに含めて、mod_headers が有効になっていることを確認してください。

Header set Access-Control-Allow-Origin *
于 2012-07-06T08:57:06.857 に答える