我尝试的几乎完全是Charleshaa did two years ago,所以我的代码看起来与当时给出的答案中建议的代码非常相似。
但有些事情让我很烦恼:当map-canvas
(地图容器)的宽度增加时,地图本身会停留在画布的左侧,而附加区域会添加到右侧。
稍后大约一毫秒左右调用map.setCenter(oldCenter);
,并且容器内的地图位置会发生变化(向右)。
可以看到这种变化(向右跳转)并且真的很烦人。
有没有办法在调整地图大小的同时设置中心,而不是在之后不久?
我使用$("#map-canvas").css("width","100%");
调整地图大小。所以我想同步jQuery CSS事件和Google Maps事件。
非常感谢,
蒂莫
修改
我想在左边显示一个侧边栏,所以当有人点击地图时,会出现侧边栏并且地图必须重新加载(中心应该保持不变)。
为了告诉你,我做了jsfiddle,但这次地图行为是完美的。 jsfiddle只包含我的部分代码,因为否则我将不得不发布更多。
我猜我的编码太糟糕了,它让地图有点跳跃,我是对的吗?
答案 0 :(得分:1)
尝试map.panTo(oldCenter);
只要框架内的新点,这将使更改比setCenter()
更平滑。
答案 1 :(得分:0)
我找到了解决方案:在超时内调用google.maps.event.trigger(map, 'resize');
和map.setOptions({center: oldCenter});
时,地图会跳转调整大小。 jQuery .animate()之后的函数似乎与超时完全相同。
我更新了jsfiddle,我在我的问题中发布了一点,所以跳跃更明显(http://jsfiddle.net/5YWFW/1/)。 当您点击地图以显示侧边栏时,会有一个非常恼人的跳跃。
如果JS底部的代码没有写入.animate()函数内部,而是直接写入,则地图看起来要好得多(http://jsfiddle.net/5YWFW/2/)。
修改
显然,这只对在Mac OS X上运行的Google Chrome有影响。