为什么我的 OpenLayers 3 地图没有显示在 Internet Explorer 11 中?
Why does my OpenLayers 3 map not show in Internet Explorer 11?
我正在尝试在 Internet Explorer 中提供一张在 Firefox 或 Chrome 中运行良好的地图。在调试时,我注意到当我尝试在 IE 中调出地图时缺少某些内容。这是 Firefox 中带有工作地图的 html:
这是 html 缺少地图的基本元素:
这发生在我绘制边界框并提交搜索后,搜索应该找到边界框中的结果。然后绘制每个结果覆盖的整个区域。应该显示结果的时间是地图未出现在 Internet Explorer 11 中的时间。仍显示空白地图面板,但缺少地图图块。当您 "zoom in" 到地图时,我收到此错误:无法获取未定义或空引用的 属性 'style'。
谁能帮我弄清楚为什么 IE 会忽略这些元素?
您的网页似乎没有在 IE11 中使用 HTML5 模式,因此得不到 Canvas 支持。
确保您的文档类型(即 HTML 文件的第一行)是
<!DOCTYPE html>
还要确保您没有使用任何元标记来告诉 IE11 使用兼容模式。
加载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;
经过多次试验和错误(以及 google 的几个小时)后,我设法弄清楚,如果您将地图从页面中删除然后尝试绘制,IE 似乎忘记了如何渲染您的地图 vectors/extents 上,带回来。最终有效的解决方案是每次我想要显示它时都必须重新初始化地图。
我正在尝试在 Internet Explorer 中提供一张在 Firefox 或 Chrome 中运行良好的地图。在调试时,我注意到当我尝试在 IE 中调出地图时缺少某些内容。这是 Firefox 中带有工作地图的 html:
这是 html 缺少地图的基本元素:
这发生在我绘制边界框并提交搜索后,搜索应该找到边界框中的结果。然后绘制每个结果覆盖的整个区域。应该显示结果的时间是地图未出现在 Internet Explorer 11 中的时间。仍显示空白地图面板,但缺少地图图块。当您 "zoom in" 到地图时,我收到此错误:无法获取未定义或空引用的 属性 'style'。
谁能帮我弄清楚为什么 IE 会忽略这些元素?
您的网页似乎没有在 IE11 中使用 HTML5 模式,因此得不到 Canvas 支持。
确保您的文档类型(即 HTML 文件的第一行)是
<!DOCTYPE html>
还要确保您没有使用任何元标记来告诉 IE11 使用兼容模式。
加载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;
经过多次试验和错误(以及 google 的几个小时)后,我设法弄清楚,如果您将地图从页面中删除然后尝试绘制,IE 似乎忘记了如何渲染您的地图 vectors/extents 上,带回来。最终有效的解决方案是每次我想要显示它时都必须重新初始化地图。