1つのオプションは、初期マップサイズを非常に大きいもの、たとえば1000x1000ピクセル以上に設定することです。これにより、SVGオーバーレイが表示可能領域内に強制的にレンダリングされます(これはFirefoxの制約のようです)。これはサイトのデザインに影響を与える可能性があることを認識しているため、オーバーフローを非表示にするためにマップをdivでラップすることを検討することをお勧めします。
#map-wrap {
width: 500px;
height: 500px;
overflow: hidden;
}
#map {
width: 1000px; /* just big enough to show the whole thing at zoom #6 */
height: 1000px;
}
マップがレンダリングされたら、マップのサイズを500 x 500の希望のサイズに変更し、マップの中央に配置し直すことができます。bounds_changed
これは、次の場合に実行できます。
google.maps.event.addListener(map, 'bounds_changed', function() {
$map.css({ height: '500px', width: '500px' }); // back to desired dims
google.maps.event.trigger(map, 'resize'); // trigger a 'refresh'
map.setCenter(new google.maps.LatLng(-18.2, 35.1)); // re-center map
google.maps.event.clearListeners(map, 'bounds_changed'); // don't do this again
});
これが実際の例です(FirefoxとChromeでテスト済み)。
いくつかの警告:
- 人々がズームインできるようにしたいほど、最初の「一時的な」マップを大きくレンダリングする必要があります。たとえば、ズームレベル7を許可する場合は、補正するために初期マップを2000x2000にする必要があります。明らかに、マップをそれほど大きくレンダリングする場合、パフォーマンスの問題があります。分散が指摘したように、ズームレベルを制限するのが賢明かもしれません。
- 直前のサイズ変更により、マップの再調整時にちらつきが発生します。jQueryを使用してマップを非表示/表示するか、マップのサイズ変更が完了するまですべての上に白いオーバーレイを配置することを検討することをお勧めします。