Плитки карты не отображаются (все розовые) в Firefox с помощью OpenLayers и собственного сервера OSM

Я установил свой собственный сервер OSM для предоставления листов карты для использования в приложении. Для приложения я использую OpenLayers и пришел к странной проблеме при портировании кода из slippymap в мое приложение. В основном я использую тот же код, и для локальных плиток я настраиваю url-адрес моего сервера плиток.

проблема в том, что при переключении на локальный слой я вижу только розовый слой карты, но атрибут src тега изображения загружает фактическую плитку. Я попытался с Firebug удалить розовый слой, но за ним нет никакого изображения! При копировании url из атрибута src тега img плитка открывается как изображение.

пробовал это в Chrome, и локальный слой работает, в IE 7,8,9 тоже. Проблема только в FF, и я подозреваю что-то с OpenLayers, но не уверен, что. Слой Mapnik работает и показывает плитки во всех браузерах. Кстати, используя HTML5.

любые идеи или подсказки.

2 ответов


есть еще одно решение, которое не требует добавления заголовков CORS на стороне сервера. Вам нужно предоставить опцию "tileOptions" конфигурации слоя, например:

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

документы OpenLayers для


Хм, я почти угадал. Это был параметр заголовка Apache, который включает междоменный запрос для предоставленных ресурсов. Вот больше информации для любопытных https://developer.mozilla.org/en/http_access_control

Это параметр заголовка, включите его в , или .htaccess файл и убедитесь,что у вас включен mod_headers.

Header set Access-Control-Allow-Origin *