0

Google マップからオーバーレイ レイヤーを取得して、マップをスクロールしたときにそれ自体を調整する方法がわかりません。

私は次のようなことをしています

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

マップをスクロールすると、マップの元の境界線があったオーバーレイに div の赤いボックスが表示されます。内部はすべて問題ありませんが、スクロールしたときにそのオーバーレイ レイヤーの外側に新しいコンテンツがある場合はどうなりますか? 境界、ズームなどが変更されるたびにオーバーレイレイヤーを調整できるといいのですが、方法がわかりません。

4

1 に答える 1

0

これを回避する 1 つの方法は、overlayLayer にアタッチした子の位置を調整することです。「bounds_changed」またはそのようなイベントで描画をトリガーしてから、描画メソッドで描画できます (@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を最初のビューポートに固定したままにするのではなく、マップのウィンドウに合わせて移動させるより良い方法があることを願っていました。

于 2013-10-21T17:49:05.020 に答える