Google Maps JS API会在自定义标记点击时间歇性地崩溃进程

时间:2012-09-27 17:47:31

标签: javascript performance google-maps google-maps-api-3 crash

我担心我正在开发的产品本质上充满了深奥的客户端敏感内容,我无法将问题场景简化为可重现的示例,因此这对于域专业知识和洞察力很有吸引力在以下代码中:

http://jsbin.com/barney/1/edit

(利用jQuery,Underscore,Mustache,一些插件,当然还有Google Maps v3 JS API)

我正在使用Google Maps JS API生成一个相对简单的网络应用。到目前为止,它所做的只是创建自定义内容InfoWindow,在用户点击自定义MarkerImage时动态更改内容。使用样式器对地图进行去饱和处理。

当我单击其中一个自定义标记时,间歇性(无法可靠地重现)该过程将完全冻结。我的代码的第一行上有一个断点,紧挨着event.addListener - 我的代码第一次被通常的堆栈命中 - 但是进程永远不会到达:当我到达那里时,一切都被冻结了

4次标记点击通常可以解决问题,但有时候应用程序会毫不费力地运行整个用户体验。

其他信息,我的头脑:

  • 我有几个jQuery点击事件委托给正文(不是 这些是在可观察的堆栈中发射的);
  • 单独留下5分钟左右,此应用程序无论如何都会冻结,所以我怀疑我无意中默默地滥用了Maps API。

对于这类场景的任何建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

所有上述问题都是通过从Google Maps DOM结构的祖先元素中删除CSS3过渡来解决的,该结构利用translate3d(0)作为黑客来强制GPU加速动画。奇怪但真实。 Webkit中明显不相关的性能问题anecdotal evidence的花絮显示将transition应用于translate3d'd会出现各种未捕获的内存泄漏问题。奇怪的是,考虑到传统观念认为将translate3d应用于转换是一种缓解CPU性能的方法!