在Google Maps javascript API v3中,不断更新矩形边界非常缓慢

在Google Maps javascript API v3中,不断更新矩形边界非常缓慢,javascript,google-maps-api-3,selection,Javascript,Google Maps Api 3,Selection,我还没有找到在地图上选择我喜欢的区域的控件,所以我决定自己写一个。它工作正常,但在IE中,更新选择框的速度非常慢。我正在使用GoogleMapsAPIv3中的矩形对象在地图上显示选择区域,并在每个mousemove事件中重新绘制它 我发现了一个类似的实现,它使用的是API的v2,工作得非常好。v2和v3之间的性能是否有很大的降低,或者在每个mousemove事件上重新绘制矩形的代价是否太高?如果我的控制注定是缓慢的,那么有没有办法以另一种方式实现相同的功能?我也尝试过使用计时器只捕捉一些鼠标移动

我还没有找到在地图上选择我喜欢的区域的控件,所以我决定自己写一个。它工作正常,但在IE中,更新选择框的速度非常慢。我正在使用GoogleMapsAPIv3中的矩形对象在地图上显示选择区域,并在每个mousemove事件中重新绘制它

我发现了一个类似的实现,它使用的是API的v2,工作得非常好。v2和v3之间的性能是否有很大的降低,或者在每个mousemove事件上重新绘制矩形的代价是否太高?如果我的控制注定是缓慢的,那么有没有办法以另一种方式实现相同的功能?我也尝试过使用计时器只捕捉一些鼠标移动事件,但没有运气

我并不是(主要)要求链接到一个不象我一样滞后的v3控件,我更感兴趣的是我能做些什么来优化我自己的代码(或者如果这是一个死胡同)

我的控件示例可在此处找到:[编辑:不再可用]

Javascript代码如下:


谢谢。

您可以尝试设置一个超时,将mousemove响应限制在一个足够短的时间间隔内,以供浏览器处理。例如:

interval = 100; waiting = false; function respond () { if (waiting) { return; } waiting = true; // do something useful here setTimeout('waiting = false;', interval); } document.body.onmousemove = respond; 间隔=100; 等待=错误; 函数响应(){ 如果(等待){ 返回; } 等待=真; //在这里做些有用的事 setTimeout('waiting=false;',interval); } document.body.onmousemove=响应; 根据您的喜好调整间隔(当前为100毫秒,或十分之一秒)和事件目标,然后将方框呈现代码放入回调中

self._rectangle.setMap(...)
调用DrawRectangle函数以提高性能。每次更改矩形边界时调用setMap是没有用的。只要改变界限

打电话

self._rectangle.setMap(self.Map);
设置矩形的起始点时,只需在clickListener中执行一次


虽然我还没有在IE上测试过,但Chrome和Firefox的性能有了很大的提高。

很晚了,但是如果有人在搜索,比如我。。。 IE8似乎在谷歌地图圈中几乎毫无用处地慢了下来。谷歌自己的代码:
在Firefox 3.6、Safari 5和Chrome 10中,我的旧奔腾4计算机运行良好,但在IE8中运行缓慢。运行XP所以我不知道IE9。

你的例子对我来说很好-顺便说一句,我正在运行IE9测试版。你使用的是什么版本的IE?我已经在功能强大的机器上用IE8和Chrome 9进行了测试。这个矩形在Chrome中渲染得更平滑,但是在屏幕上选择更大的区域时仍然会有明显的闪烁。我遇到了同样的问题。在ie8中,贴图点和贴图拖动速度非常慢,但在ie9、chrome和firefox中工作得很好。是的,我注意到调用setMap()是不必要的,因此将其删除。我看到了一些改进,但实际上我认为IE是一个失败的案例,无论我如何优化:)谢谢你指出了这一点!