Почему моя карта 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 на использование режима совместимости.