1

我正在为 GeoGuessr.com 构建一个用户脚本(安装在浏览器中以修改 3rd 方页面的脚本)。它添加了一个按钮,允许将小猜测图扩展到全屏。

虽然我的布局没有问题,但问题是谷歌地图没有调整大小:

在此处输入图像描述

该页面是使用 Backbone 构建的,没有用于访问任何视图的 API,更不用说内部 Google Maps 对象了。

我试过了

$(window).trigger('resize');

触发窗口调整大小事件,因为我注意到当我手动执行此操作时地图调整大小。然而什么也没发生(Chrome 29)。

有没有办法强制谷歌地图在我的用户脚本中调整大小?

4

1 回答 1

2

如果调整div地图容器的大小,还必须调整地图对象本身的大小。如参考中所述:

当 div 改变大小时,开发者应该在地图上触发这个事件:google.maps.event.trigger(map, 'resize').

map对象的变量名在哪里google.maps.Map。(我猜你只能在全局命名空间中访问)。

更新:

首先,要访问由您构建的属性,Backbone.View.extends您需要访问prototype类的 - 在这种情况下window.gg.guessMapView.prototype。接下来我们需要指定el视图将使用的。因为它最初是由 Backbone 视图生成的——它应该是这样的——所以你无权访问它。有关更多信息,请参阅本文。我们要做的是附加一个现有的 html 元素到它,这就是#guessMapContainer元素。

window.gg.guessMapView.prototype.$el = $('#guessMapContainer')

指定元素后,您希望重新初始化视图,以便它再次呈现地图。这可以通过initialize()已经为视图实现的方法来完成。

window.gg.guessMapView.prototype.initialize()
于 2013-09-03T20:43:50.250 回答