Googleマップをドロップダウンメニューに表示する方法
Googleマップをドロップダウンメニューに表示する方法を紹介します。このサンプルでは、「地図メニュー」をクリックすると「東京」「大阪」「名古屋」の3つの項目が表示され、それぞれの項目をクリックすると、その項目の下へ対応するGoogleマップが展開されます。もう一度同じ項目をクリックすると地図を閉じることができ、別の場所を開いた場合は、それまで表示していた地図を閉じて選択した地図へ切り替えます。
複数店舗を掲載する店舗サイト、支店や営業所を案内する会社サイト、施設一覧、イベント会場のアクセス案内など、複数地点のGoogleマップを1つのメニュー内へまとめたい場面で利用できます。東京・大阪・名古屋の地図を最初からすべて表示する必要がなく、必要な場所だけをドロップダウンメニュー内で確認できるため、ページ内の表示スペースを抑えながら複数のアクセス情報を整理できます。
Googleマップはiframeを使用して表示します。この実装ではGoogle Maps JavaScript APIを使用せず、Googleマップの埋め込みURLを利用する構成です。HTMLではメニュー項目の名前や各地点のGoogleマップを変更でき、CSSではメニューの横幅、余白、背景色、枠線、角丸、地図の高さなどを調整できます。JavaScriptでは「地図メニュー」の開閉と、東京・大阪・名古屋それぞれの地図の表示切り替えを行います。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
「地図メニュー」をクリックすると東京・大阪・名古屋が表示されます。各場所をクリックすると、その項目の下にGoogleマップが展開されます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>Googleマップをドロップダウンメニューに表示</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Googleマップドロップダウンメニュー全体 -->
<div class="googlemap-dropdown-menu_wrap">
<!-- タイトル -->
<div class="googlemap-dropdown-menu_title">
Googleマップをドロップダウンメニューに表示
</div>
<!-- 説明文 -->
<p class="googlemap-dropdown-menu_text">
メニューを開き、場所をクリックするとその項目の下にGoogleマップを表示します。
</p>
<!-- ドロップダウンメニュー配置エリア -->
<div class="googlemap-dropdown-menu_group">
<!-- ドロップダウンメニュー本体 -->
<div class="googlemap-dropdown-menu_area">
<!-- メニュー開閉ボタン -->
<button
class="googlemap-dropdown-menu_button"
type="button"
data-googlemap-dropdown-menu-button="">
地図メニュー
<span class="googlemap-dropdown-menu_arrow">▼</span>
</button>
<!-- 場所一覧 -->
<ul
class="googlemap-dropdown-menu_list"
data-googlemap-dropdown-menu-list="">
<!-- 東京 -->
<li class="googlemap-dropdown-menu_item">
<!-- 東京の地図を開閉するボタン -->
<button
type="button"
class="googlemap-dropdown-menu_map-button"
data-googlemap-dropdown-map-button="1">
東京
</button>
<!-- 東京のGoogleマップ表示エリア -->
<div
class="googlemap-dropdown-menu_map"
data-googlemap-dropdown-map="1">
<!--
【Googleマップの埋め込みURLの設定方法】
1. Googleマップで東京に表示したい場所を検索します。
2. 「共有」をクリックします。
3. 「地図を埋め込む」を選択します。
4. 「HTMLをコピー」をクリックします。
5. コピーしたiframeコード内の
src="..." に入っているURLを使用します。
6. YOUR_GOOGLE_MAP_EMBED_URL_1 を
取得した埋め込みURLへ置き換えてください。
この実装ではGoogle Maps JavaScript APIを
使用しないため、APIキーやMap IDは不要です。
-->
<iframe
class="googlemap-dropdown-menu_frame"
src="YOUR_GOOGLE_MAP_EMBED_URL_1"
title="東京のGoogleマップ"
loading="lazy">
</iframe>
</div>
</li>
<!-- 大阪 -->
<li class="googlemap-dropdown-menu_item">
<!-- 大阪の地図を開閉するボタン -->
<button
type="button"
class="googlemap-dropdown-menu_map-button"
data-googlemap-dropdown-map-button="2">
大阪
</button>
<!-- 大阪のGoogleマップ表示エリア -->
<div
class="googlemap-dropdown-menu_map"
data-googlemap-dropdown-map="2">
<!--
【大阪のGoogleマップ設定】
Googleマップから表示したい場所の
埋め込みURLを取得し、
YOUR_GOOGLE_MAP_EMBED_URL_2 を
取得したURLへ置き換えてください。
-->
<iframe
class="googlemap-dropdown-menu_frame"
src="YOUR_GOOGLE_MAP_EMBED_URL_2"
title="大阪のGoogleマップ"
loading="lazy">
</iframe>
</div>
</li>
<!-- 名古屋 -->
<li class="googlemap-dropdown-menu_item">
<!-- 名古屋の地図を開閉するボタン -->
<button
type="button"
class="googlemap-dropdown-menu_map-button"
data-googlemap-dropdown-map-button="3">
名古屋
</button>
<!-- 名古屋のGoogleマップ表示エリア -->
<div
class="googlemap-dropdown-menu_map"
data-googlemap-dropdown-map="3">
<!--
【名古屋のGoogleマップ設定】
Googleマップから表示したい場所の
埋め込みURLを取得し、
YOUR_GOOGLE_MAP_EMBED_URL_3 を
取得したURLへ置き換えてください。
-->
<iframe
class="googlemap-dropdown-menu_frame"
src="YOUR_GOOGLE_MAP_EMBED_URL_3"
title="名古屋のGoogleマップ"
loading="lazy">
</iframe>
</div>
</li>
</ul>
</div>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは「地図メニュー」と東京・大阪・名古屋の3つの項目、それぞれに対応するGoogleマップのiframeを配置します。CSSではドロップダウンメニューやGoogleマップ表示領域の横幅、余白、背景色、角丸などを設定し、JavaScriptではメニューの開閉と各Googleマップの表示切り替えを行います。Googleマップは埋め込みURLを使用して表示するため、利用者自身で表示したい場所の埋め込みURLをGoogleマップから取得し、index.htmlへ設定します。この実装ではGoogle Maps JavaScript APIを使用しないため、APIキーやMap IDは必要ありません。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはドロップダウンメニューとGoogleマップ表示領域を構成するファイルです。「地図メニュー」の文章、東京・大阪・名古屋の項目名、各Googleマップの埋め込みURLを変更できます。GoogleマップのURLは、YOUR_GOOGLE_MAP_EMBED_URL_1、YOUR_GOOGLE_MAP_EMBED_URL_2、YOUR_GOOGLE_MAP_EMBED_URL_3の3箇所へ設定します。
style.cssはドロップダウンメニューとGoogleマップ表示領域のデザインを設定するファイルです。全体やメニューの横幅、余白、背景色、文字色、枠線、角丸、影、ボタン、Googleマップの高さなどを変更できます。
script.jsはドロップダウンメニューとGoogleマップを開閉するファイルです。「地図メニュー」をクリックすると東京・大阪・名古屋の一覧を開閉します。各場所をクリックすると対応するGoogleマップを表示し、別の場所を選択した場合は、それまで開いていた地図を閉じて選択した地図を表示します。同じ場所をもう一度クリックすると、その地図を閉じます。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。次に、Googleマップでドロップダウンメニューへ表示したい場所を検索してください。検索した場所の「共有」をクリックし、「地図を埋め込む」を選択して「HTMLをコピー」をクリックします。
コピーしたHTMLにはGoogleマップを表示するiframeが含まれています。その中にあるsrc="..."のURL部分を使用します。取得した埋め込みURLをindex.htmlにあるプレースホルダーへ設定してください。
東京として表示する地図の埋め込みURLはYOUR_GOOGLE_MAP_EMBED_URL_1、大阪として表示する地図の埋め込みURLはYOUR_GOOGLE_MAP_EMBED_URL_2、名古屋として表示する地図の埋め込みURLはYOUR_GOOGLE_MAP_EMBED_URL_3へ置き換えます。項目名を別の場所へ変更する場合も、それぞれの項目に対応するGoogleマップの埋め込みURLを設定してください。
3つの埋め込みURLを設定したあと、sample/index.htmlをブラウザで開きます。「地図メニュー」をクリックすると場所の一覧が表示され、「東京」「大阪」「名古屋」のいずれかをクリックすると、その項目の下へ設定したGoogleマップが表示されます。
カスタマイズできる内容
index.htmlではタイトル、説明文、「地図メニュー」の文章、東京・大阪・名古屋の項目名、各Googleマップの埋め込みURLを変更できます。店舗名、支店名、施設名などへ項目名を変更し、それぞれに対応するGoogleマップの埋め込みURLを設定することもできます。
style.cssでは全体の横幅や余白、背景色、枠線、角丸、メニューボタンの色、項目ボタンの表示、メニュー一覧の影、Googleマップ表示領域の高さなどを変更できます。
数値調整
style.css
max-width:700px;
サンプル全体の最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。
margin:40px auto;
サンプル全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
サンプル全体の内側余白です。値を大きくすると内容と外側の枠線との間隔が広がります。
border-radius:18px;
サンプル全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると小さくなります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくするとドロップダウンメニューとの間隔が広がり、小さくすると狭くなります。
max-width:420px;
ドロップダウンメニューの最大横幅です。値を大きくするとメニューが横に広がり、小さくすると狭くなります。
min-height:52px;
「地図メニュー」ボタンの最小高さです。値を大きくするとボタンが高くなります。
padding:14px 18px;
「地図メニュー」ボタンの内側余白です。上下の14pxを大きくするとボタンが高くなり、左右の18pxを大きくすると文字と端の間隔が広がります。
top:calc(100% + 10px);
「地図メニュー」ボタンと場所一覧の間隔です。10pxを大きくするとメニュー一覧がボタンから下へ離れます。
padding:8px;
場所一覧の内側余白です。値を大きくすると各項目と一覧の外枠との間隔が広がります。
margin-top:4px;
2件目以降の場所項目との間隔です。値を大きくすると東京・大阪・名古屋の各項目間が広がります。
padding:12px 14px;
各場所を選択するボタンの内側余白です。上下の12pxを大きくすると項目が高くなり、左右の14pxを大きくすると文字と端の間隔が広がります。
height:240px;
各Googleマップの表示領域の高さです。値を大きくすると地図が高く表示され、小さくすると低くなります。
@media (max-width:640px)
画面幅640px以下でスマートフォン向けの表示へ切り替える基準です。この幅以下では全体の内側余白をpadding:24px 18px;へ変更します。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssでは全体とドロップダウンメニューにwidth:100%を指定し、それぞれmax-width:700pxとmax-width:420pxで最大横幅を制限しているため、画面幅に合わせて縮小されます。Googleマップのiframeにもwidth:100%を指定しているため、地図もメニューの横幅に合わせて表示されます。また、画面幅640px以下では全体の内側余白をpadding:24px 18pxへ変更しているため、スマートフォン・タブレット・PCで利用できます。
コメント