【问题标题】:Google Maps jumps when setCenter is called after Resize在调整大小后调用 setCenter 时,Google 地图会跳转
【发布时间】:2014-01-04 03:01:53
【问题描述】:

我正在尝试做几乎与Charleshaa did two years ago 完全相同的事情,因此我的代码看起来与当时给出的答案中建议的代码非常相似。

但有些事情让我很恼火:当map-canvas(地图容器)的宽度增加时,地图本身会停留在画布的左侧,而在右侧添加了额外的区域。 大约一毫秒后,map.setCenter(oldCenter); 被调用,地图在容器内的位置发生了变化(向右)。

可以看到这种变化(作为向右的跳转)并且真的很烦人。

有没有办法在调整地图大小的同时设置中心,而不是在不久之后?

我使用$("#map-canvas").css("width","100%"); 调整地图大小。所以我想同步一个 jQuery CSS 事件和一个谷歌地图事件。

非常感谢,

时间

编辑


我想在左侧显示一个侧边栏,所以当有人点击地图时,侧边栏会出现并且地图必须重新加载(中心应该保持不变)。

为了向您展示,我做了一个jsfiddle,但这次地图行为是完美的。 jsfiddle 仅包含我的部分代码,否则我将不得不发布更多内容。

我想我的编码太糟糕了,以至于地图有点跳,对吗?

【问题讨论】:

  • 在代码中哪里调用 setCenter?顺便说一句,您的代码在哪里?是什么导致地图调整大小?
  • 请发布 jsfiddle.net。这样一来,1)不清楚你到底做了什么2)不清楚你观察到了什么。 3) 重新居中时,地图当然会“跳跃”!这就是我所期望的。 4)如果你不想在调整大小后移动任何地图,为什么不先设置中心然后然后调整大小?
  • @MrUpsidown 我编辑了问题

标签: jquery google-maps google-maps-api-3 resize center


【解决方案1】:

尝试map.panTo(oldCenter);,只要框架内的新点,这将使更改比setCenter() 更有效。

【讨论】:

  • 我已经尝试过了,但我不希望地图在调整大小后移动。不过谢谢你的回答:)
【解决方案2】:

我找到了解决方案:当在超时内调用 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 上运行的谷歌浏览器有影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2011-03-04
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2014-08-16
    • 2019-07-11
    • 1970-01-01
    相关资源
    最近更新 更多