Почему моя карта OpenLayers 3 не отображается в Internet Explorer 11?

Я пытаюсь обслуживать карту в Internet Explorer, которая отлично работает в Firefox или Chrome. Во время отладки я заметил, что что-то не хватало, когда я пытался отобразить карту в IE. Это html, который находится в Firefox с рабочей картой: enter image description here

Это html, в котором отсутствуют основные элементы для карты:

enter image description here

Это происходит после того, как я нарисую ограничивающий прямоугольник и отправлю запрос, поиск должен найти и результаты, которые находятся в ограничивающей рамке. Затем нарисуйте всю область, покрываемую каждым результатом. Когда результаты должны отображаться, это когда карта не отображается в Internet Explorer 11. Пустая карта-панель все еще отображается, но в ней отсутствуют фрагменты карты. Когда вы "приближаетесь" к карте, я получаю эту ошибку: невозможно получить свойство "стиль" undefined или нулевую ссылку.

Может кто-нибудь помочь мне понять, почему IE оставляет эти элементы?

Ответ 1

После долгих проб и ошибок (и часов в google) мне удалось выяснить, что IE, похоже, забывает, как отображать вашу карту, если вы удалите ее со страницы, а затем попытайтесь нарисовать на ней векторы/экстенты и вернуть ее. Решение, которое в конечном итоге работало, состояло в том, что мне приходилось повторно инициализировать карту каждый раз, когда я хотел, чтобы она отображалась.

Ответ 2

После загрузки Openlayers используйте этот код

var _class = OpenLayers.Format.XML;

var originalWriteFunction = _class.prototype.write;

var patchedWriteFunction = function()
{
   var child = originalWriteFunction.apply( this, arguments );

   // NOTE: Remove the rogue namespaces as one block of text.
   //       The second fragment "NS1:" is too small on its own and could cause valid text (in, say, ogc:Literal elements) to be erroneously removed.
   child = child.replace(new RegExp('xmlns:NS\\d+="" NS\\d+:', 'g'), '');

   return child;
}

_class.prototype.write = patchedWriteFunction;

Ответ 3

Похоже, вы не используете режим HTML5 для своей веб-страницы в IE11 и, следовательно, не получаете поддержки Canvas.

Убедитесь, что ваш doctype (т.е. первая строка вашего HTML файла)

<!DOCTYPE html>

Также убедитесь, что вы не используете метатеги, которые указывают IE11 на использование режима совместимости.