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
    }
});

The OpenLayers docs for Layer.OSM and Tile.Image tell you how to do this, but there's no mention of the fact that the default can cause issues in 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 回答