如何使用Google地图滚动调整叠加层

时间:2013-10-21 00:52:47

标签: javascript google-maps-api-3 maps

在滚动地图时,我无法弄清楚如何从Google地图中获取叠加图层以进行自我调整。

我正在做类似

的事情
div = document.createElement('div')
div.style.position = 'absolute';
div.borderColor = "red";
this.getPanes().overlayLayer.appendChild(div)

当我滚动地图时,我会在地图的原始边框所在的叠加层中看到我的div的红色框。里面的所有东西都很好,但是如果我滚动那么覆盖层之外有新内容怎么办?如果我可以在每次边界,缩放等时调整自己的覆盖层,那会很好。但是我看不出怎样。

1 个答案:

答案 0 :(得分:0)

解决这个问题的一种方法是调整你附加到overlayLayer的孩子的位置。我可以在'bounds_changed'或某些此类事件上触发绘制,然后在draw方法中触发(假设@div是叠加层的子节点):

bounds = @getMap().getBounds()
sw = overlayProjection.fromLatLngToDivPixel(bounds.getSouthWest());
ne = overlayProjection.fromLatLngToDivPixel(bounds.getNorthEast());
@div.style.left = sw.x + 'px';
@div.style.top = ne.y + 'px';
@div.style.width = (ne.x - sw.x) + 'px';
@div.style.height = (sw.y - ne.y) + 'px';

我想这不错,但是你必须经常考虑抵消,而且看起来并不那么干净。我想这样做,但希望有更好的方法让实际的overlayLayer移动到匹配地图的窗口,而不是固定在初始视口上。