最近有用户反映在IE10下运行openlayers2.11版的地图网站会出现瓦片错位的现象(具体现象是瓦片上下错位,左右不错位)
经过本人一番辛苦的调试,发现问题出现在Gird.js文件中的initGriddedTiles方法中的do while循环中。如附件中所示。
initGriddedTiles方法中有一个嵌套的do while循环(do while语句中还有一个do while语句),里层的do while语句块在第一次执行的tileoffsetlon的值一定是等于startLon的,但是我测试发现,第一次执行里层的do while语句块的时候tileoffsetlon的值不等于startLon,地图就出现了上下错位,地图错位也确实是这个原因:第一次执行里层的do while语句块的时候tileoffsetlon的值不等于startLon。那这是为什么呢?经过本人自行查看代码,在do while循环中,本身没有代码修改startLon的值,当地图缩放到某一级别的时候(我测试通常是第7级开始错位)第一次执行里层的do while语句块的时候,tileoffsetlon的值不居然等于startLon。奇迹发生了,你不可不相信IE10能创造奇迹。在火狐,chrome,IE8,IE9等浏览器下测试不会发生的问题,在IE10(IE10 pro Release )下发生了;还有一个更神奇的事情是如果你开启了IE10的开发人员工具的debugger(代码中其实并没有debugger),也不会出现瓦片错位的现象。微软我很你,就为了这个问题我头都大了!谁都了我的奶酪(tileoffsetlon值不对是E10自己改动了,我很确认,因为代码中没有其他值修改startLon),
IE10。
这里我猜测有可能是do while语句在IE10中存在某种缺陷。值被莫名修改,让人很没有安全感额!
最后跟大家说一下解决方案:
在openlayers2.11版本第507行的下一行加入如下代码:
if(tileoffsetlon != startLon && colidx==0 ) {
tileoffsetlon = startLon
}
就OK了。
相关推荐
OpenLayers-2.11,,关于OpenLayers-2.11的一些资源补助,,重要
请问在openlayers中如何删除Layer中的marker 3 在层中加了一个标记怎么永久的存到地图上 3 OpenLayers 如何设死地图边界 3 谁写过openlayers解析xml 3 openlayer.popup 3 OpenLayers 怎么做字段标注 4 字段标注不是...
关于openlayers开发的一个中文手册,供大家学习。
OpenLayers 2.11 版,GIS开源框架
openlayers是一个开源得webgis项目,该文档收集了对openlayers开源webgis项目的总结,包括项目介绍、源代码总体结构分析、定义底层类与定制JS内置类、空间数据的组织与实现、数据渲染分析、地图表现、OpenLayers中的...
openlayers中文文档,openlayers中文文档api
openlayers中文文档,openlayers中文文档api
OpenLayers中文学习文档,原始文档是.md格式的转换成Html后转换成了chm格式,感谢原文作者。
awesome-openlayers, 在OpenLayers库中,列出所有相关内容 了不起的openlayers这个存储库目标是共享有关 OpenLayers 3 。4 & 5库的信息。请不要犹豫,请求提交更改,添加。使用OpenLayers的插件外部插件和项目网站...
openLayers-API中文,全,我找了好久,提供给大家
基于Openlayers3+JQuery+.NET+SQLSERVER实现,此代码为《WebGIS之OpenLayers全面解析》中示例所附的源代码。
ol openlayers 中文 文档 翻译 最新编译、不全、差评的别下、嫌分高别下
openLayers中文版api全翻译
openLayers-API中文版
openlayers 实现在地图上添加文字标注。为图片注记添加文本标签
这个文件中包含了 Openlayers6.2.1 版本的部分功能示例代码,详细教程请参考文章:https://blog.csdn.net/Supreme_Sir/article/details/105123438
在手写openlayers6 绘制扇形及环形源码的过程中会摘取openlayers中的核心逻辑,简化代码实现过程,保留核心功能,例如:vue3接入openlayers openlayers绘制环形 openlayers绘制扇形 适合人群:具备一定编程基础,...