我正在编写一个需要同时显示多达4000个多边形的应用程序,其中一些具有数百个坐标。每个多边形都需要mouseover
,mouseout
和doubleclick
的事件以及信息框标签。
我最初使用IE 8中的JavaScript语句限制遇到了问题。似乎IE限制JavaScript在单个执行块中处理5,000,000个VM语句,然后抛出一个丑陋的对话框警告用户长时间运行的脚本(无论如何脚本执行的速度有多快。)我通过在代码中放置JavaScript "setTimeout"
语句并将处理分成块来解决这个问题。脚本现在在合理的时间内执行完成,而不会遇到丑陋的错误。
但是我现在遇到的问题是在我的多边形已经构建和显示之后。如果用户然后尝试缩放,则IE中超过5,000,000语句限制。但是,在这种情况下,在执行Google Maps API代码期间达到了限制,我无法控制并无法进入setTimeouts或将其分成块。
在Chrome和Firefox中,没有任何问题,多边形在几秒钟内就能快速加载。平移和缩放同样没有问题。
我尝试过的事情:
1)减少JavaScript语句的数量。我试过让我的代码更精简。但这实际上是在Google Maps API代码中重绘多边形时发生的,所以我不确定它是否会产生影响。
2)通过要求不太精确的多边形来减少每个多边形的点数。这有点帮助但没有解决问题。
3)更改了IE" MaxScriptStatements"注册表项以阻止IE使用此限制。它起作用了,但它对我的应用来说不是一个实用的解决方案。
还有其他人遇到过这个问题吗?