1つの問題は、画面サイズが異なれば動作も異なるため、パーセンテージとピクセル測定値を混在させるのは簡単ではないということです。ただし、API機能を使用して、任意のサイズの画面でマップを希望どおりに動作させることができます。
マップを画面サイズの100%にして、ヘッダーがマップの一部を覆い隠してしまうようにします。デフォルトのマップコントロールを抑制して、部分的に隠されて表示されないようにします。ヘッダーと同じサイズの空のカスタムコントロールを作成し、マップの上部に配置します。マップコントロールが追加されると、カスタムコントロールはそれらを通常の場所から押し出し、表示されているマップ上で正しく表示されるようにします。
var posn=google.maps.ControlPosition; // shorten the reference
// Add empty custom control
var controlDiv = document.createElement('div');
controlDiv.style.width='100%';
controlDiv.style.height='41px';
map.controls[posn.TOP_LEFT].push(controlDiv);
map.controls[posn.TOP_RIGHT].push(controlDiv);
// Add map controls
map.setOptions({
mapTypeControlOptions:{position:posn.RIGHT_TOP},
mapTypeControl:true,
panControlOptions:{position:posn.LEFT_TOP},
panControl:true,
streetViewControlOptions:{position:posn.LEFT_TOP},
streetViewControl:true,
zoomControlOptions:{position:posn.LEFT_TOP},
zoomControl:true
})
http://jsfiddle.net/GTscW/4/
注1:マップは実際には見た目より41ピクセル大きいため(この場合)、中心点は表示可能なマップの中心より20ピクセル高くなります。これは心配する価値がないかもしれません。もしそうなら、見かけの中心点を扱うことは、SOに関する別の質問の主題です。
注2:Googleロゴと規約のリンクは常にマップの下部にあり、[現在]コントロールを回避するために移動しないため、この方法は固定フッターを取得するためには機能しません。