Googleマップを軽量化したい(遅延読み込み)

Googleマップの埋め込み地図が表示されたWebページのイラストで、読み込みを遅らせる仕組みを示す時計アイコンが添えられている画像。マップのLazy Loadによる軽量化を表現したデザイン。 Google

このページでは、ページの読み込み速度を落としがちな Googleマップの埋め込み地図 を、できるだけ軽く表示するための 遅延読み込み(Lazy Load) の考え方と実装パターンをまとめています。

難しいライブラリは使わず、静的HTML+少しのJavaScript でできる範囲にしぼって解説します。

このページの対象とゴール

このページは、次のような方を想定しています。

  • アクセスページなどに Googleマップを埋め込んでいて、ページの読み込みが重い と感じている
  • トップページなど、ファーストビューにマップを置きたくない/置けない と考えている
  • なるべくシンプルな仕組みで、「見たい人だけマップを読み込む」 形にしたい

読み終わるころには、次の3つのレベルの違いと、どこまで対応するかの判断ができるようになります。

  • レベル1:loading="lazy" と配置の見直しで、最低限の軽量化をする
  • レベル2:「ボタンを押したら地図を読み込む」方式にして、初回ロードをもっと軽くする
  • レベル3:スクロール位置で自動読み込みする(おまけ・発展)
ポイント:最初はレベル1だけでも十分

いきなり複雑な仕組みにしなくても、loading=”lazy” とマップの配置を見直すだけでも体感速度はかなり改善します。まずはレベル1から試して、必要に応じてレベル2以降を検討するイメージでOKです。

なぜGoogleマップは重くなりがち?

Googleマップの埋め込みは、見た目はシンプルでも裏側では次のような処理が走っています。

  • 地図本体のデータ(タイル画像・ベクターデータなど)を読み込む
  • マーカーやUI(拡大ボタン・ルート検索など)用のJavaScriptを読み込む
  • ページ内に複数マップがあると、その分だけ処理が増える

そのため、次のような状況で特に重く感じやすくなります。

  • トップページの上部にマップを埋め込んでいる
  • 1ページの中に複数のマップを置いている(店舗一覧など)
  • 画像や動画など、他の重い要素も同じページに詰め込んでいる
ポイント:マップは「必要なページだけ」に絞る

まずは アクセスページ専用 にして、トップページには地図画像+「地図を開く」ボタンだけにするなど、マップを表示するページ・位置を見直すだけでも十分な軽量化になります。

レベル1:loading=”lazy” と配置の見直しで軽くする

もっとも簡単にできる軽量化は、遅延読み込みの属性を活用しつつ、マップの配置を工夫することです。

1-1. iframe に loading=”lazy” を付ける

最近の埋め込みコードには、すでに loading="lazy" が付いていることが多いです。例:

loading="lazy" が付いていると、画面に近づいたタイミングで読み込みが始まるため、ファーストビューの表示が少し軽くなります。

ポイント:まずは loading=”lazy” が付いているか確認

古い埋め込みコードを使っている場合は、手動で loading="lazy" を追加してもOKです。ただし、極端に古いブラウザでは無視されるだけなので、表示が壊れる心配はありません。

1-2. アクセスページにまとめる(トップに置かない)

次のような方針にするだけでも、全体の体感速度は変わってきます。

  • トップページには「写真+簡単な住所+『地図を見る』ボタン」のみ
  • 詳細な地図は アクセス専用ページ(/accessなど) にまとめる
  • 他のページには、Googleマップではなく住所テキストだけを載せる

Temply Restaurant のようなテンプレートでも、アクセス用のセクションを1つにまとめる構成がおすすめです。

レベル2:「クリックしたときだけ」地図を読み込む

さらにページを軽くしたい場合は、最初は地図を読み込まず、ボタンを押したときだけ読み込む方式が便利です。

2-1. 最初は「地図を表示」ボタンだけ出すHTML

アクセスセクションを、次のように書き換えます。

  • data-map-src 属性に、元の iframe の src のURL を入れておきます。
  • ボタンが押されるまで、iframe 自体は存在しないため、読み込みも発生しません。

2-2. ボタンが押されたら iframe を差し込むJavaScript

ページの最後(</body> の直前など)に、次のスクリプトを追加します。

これで、ユーザーが「地図を表示する」ボタンを押したタイミングでのみ、Googleマップのiframeが読み込まれるようになります。

ポイント:「見たい人だけ読み込む」だけでもだいぶ軽い

すべての訪問者が地図を見るとは限りません。ボタン式にするだけで、「見ない人」には一切マップの読み込みが発生しないため、特にスマホでの体感速度が変わってきます。

レベル3:スクロール位置で自動読み込みする(発展)

「クリックは不要だけど、画面に近づいたら自動で読み込みたい」という場合は、Intersection Observer を使う方法もあります。

仕組みはレベル2とほぼ同じで、button を使わず、マップが画面内に入ってきたタイミングで iframe を生成するだけです。

ポイント:まずはレベル2までで十分

Intersection Observer は便利ですが、対応していない古いブラウザも一部存在します。まずはレベル1〜2までを実装し、必要に応じてレベル3を検討するくらいで十分です。

よくあるつまづきとチェックポイント

クリックしても地図が表示されない

  • data-map-src に、元の src URL が正しく入っているか
  • JavaScriptのパスや貼り付け位置(</body> の直前)が間違っていないか
  • ブラウザのコンソールにエラーが出ていないか

スマホで表示が崩れる

Googleマップをレスポンシブ対応したい と組み合わせて、次の点を確認します。

  • .access-map iframe に width:100%; が当たっているか
  • aspect-ratio や高さの指定が極端になっていないか

ページがまだ重いと感じるとき

  • 画像(特にトップのヒーロー画像)が重くないか
  • 同じページにマップを複数置いていないか
  • 不要な外部スクリプト(ウィジェットなど)が入っていないか

次のステップ:Googleマップ周りをさらに整える

軽量化ができたら、レスポンシブ対応やアクセス解析、検索周りも含めて、地図まわりの環境を少しずつ整えていきましょう。

埋め込み〜レスポンシブ〜軽量化を整理する

「とりあえず表示する」ところから、「スマホでも見やすく、できるだけ軽い」状態まで、一度流れを振り返っておくと安心です。

アクセス解析(GA4)の設定を進める

サイトに来た人の動きや人気ページを把握したい場合は、GA4の導入とイベント計測を設定しておくと便利です。

Search Console関連の設定を見直す

Search Consoleの基本設定・サイトマップ・インデックス状況をセットで押さえておくと安心です。

Googleマップと相性の良い設定

実店舗を運営している場合は、Googleマップ上に表示される店舗情報も一緒に整えておくと効果的です。

※本記事の内容は 執筆時点の情報 に基づいています。
料金・仕様・画面デザインなどは変更される場合がありますので、最新の情報は公式サイトにてご確認ください。

Googleマップ
Templyをフォローする
タイトルとURLをコピーしました