使用jQuery构建和更新Google地图API自定义控件覆盖层的内容时,Google地图有时无法绘制更新后的内容。
绕过看起来是 Webkit bug 的问题。
Main.overlay = $('<div><div style="background:white"><div id="overlay"></div></div></div>').detach();
Main.map.controls[google.maps.ControlPosition.TOP_LEFT].push(Main.overlay[0]);
...
$('#overlay').html('New content');
调整窗口大小以调整地图大小,将导致新内容显示。当鼠标悬停在新内容上时,光标会像新内容存在一样发生变化。 我尝试过。
google.maps.event.trigger(Main.map, 'resize');
如何触发地图的重新绘制?由于地图实际上没有改变大小,我猜测这个过程已经被优化掉了。
我该如何告诉Google Maps强制重新绘制?或者是jQuery .html()函数导致了这个问题吗?
这个问题出现在Safari 7.0.2 (9537.74.9)和iPhone模拟器上的Mac OS X 10.9上,但在Firefox、Chrome或iOS 6 iPad 2上不会出现。
检查DOM显示所做的更改是符合要求的,只是没有显示。根据Force DOM redraw/refresh on Chrome/Mac的建议添加以下代码:
$('#overlay').hide().show(0);
绕过看起来是 Webkit bug 的问题。