スマホのUI向上!?ニョローっとGoogle Mapsを広げるJavascriptを作ってみたよ!

  • 2014.07.27(Sun) 18:30
  • WEB制作
の写真

PC、スマホで表示を分けるブログ(ホームページ)を作っている時に悩みの種になるのがGoogle Mapsの埋め込み地図。スマホで大きく表示させるとスクロールしにくくなるし、小さく表示させると地図が見えにくくなる…。けっこう厄介なんですよね。

「結局、直接Google Maps見た方が早いや」というように、何かと形骸化しがちなページ内の埋め込み地図。少しでも実用的になったらなーと思い、ニョローッと表示範囲を広げることができるボタンを追加してみたので紹介します。

ということで、サンプルはこんな感じです。地図の下にあるボタンをクリック(タッチ)すると、埋め込み地図が下にニョローっと広がります。よかったら試してみて下さいね!

こんなの体験したことありませんか?
こんなの体験したことありませんか?

この地図、スマホビューで効果を発揮します。スマホビュー時、Google Mapsの埋め込み地図は高さが一定以下の場合、枠内を動かすことができません(iPhone5で動作確認)。その性質を利用して、「縮めている時は実質画像状態、広げている時は操作可能」という切り替えを実現しています。

画面をスクロールしようとして間違って埋め込み地図の中を動かしてしまう、上記サンプルのようなイライラがなくなりますよね。

スマホでこのJavascriptを使ったイメージ
スマホでこのJavascriptを使ったイメージ

上記はスマホで使ったイメージです。縮めている時は枠内が動かず、広げている時は枠内を動かせているのが分かると思います。地図に用がない時は全く邪魔をしない空気のような存在で、用がある時は存分に活躍してくれる。Google Mapsの埋め込み地図が今までよりもグーンと実用的になると思いませんか?

もし、この地図を見て「いいなー」と思った人は、ぜひ試してみて下さいね。Javascriptを配布します。実装方法は驚くほどに簡単です。実装する時も、取り外す時も、それまでの記事(ページ)に全く影響を与えることはありません。

デモを見る

下記がJavascriptの部分です。〜.jsという名前を付けて保存し、サーバーにアップロードして読み込んで下さい。ちなみに、jQueryを利用しているので、別途読み込んでおいて下さい。

$(function(){
	//iframeタグを囲んでいるDIVのclass名
	var googlemaps_class = 'googlemap';

	//地図を広げた時の高さ(横幅に対するパーセンテージ)
	var open_google_maps_height = '125';

	//地図を縮めた時の高さ(横幅に対するパーセンテージ)
	var close_google_maps_height = '56.25';

	$('.'+googlemaps_class).each(function(){
		$(this).after('<button class="googlemaps-size-changer-syncer" style="">▼地図を広げる (画面はそのまま)</button>');
		$('.googlemaps-size-changer-syncer').toggle(
			function(){
				$('.'+googlemaps_class).eq($('.googlemaps-size').index(this)).css({'padding-bottom':open_google_maps_height+'%'});
				$(this).html('▲地図を縮める');
			},
			function(){
				$('.'+googlemaps_class).eq($('.googlemaps-size').index(this)).css({'padding-bottom':close_google_maps_height+'%'});
				$(this).html('▼地図を広げる');
			}
		);
	});
});

次のコードを、既存のスタイルシートに加えて下さい。

.googlemap{
	position:relative;
	padding-bottom:56.25%;
	height:0;
	overflow:hidden;
	max-width:100%;
	height:auto;
	-webkit-transition:all 0.4s;
	-moz-transition:all 0.4s;
	transition:all 0.4s;
}
.googlemap iframe{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
}
.googlemaps-size-changer-syncer{
	font-size:13px;
	font-weight:bold;
	margin:0;
	width:100%;
	padding:8px 0;
	background:#55acee;
	text-align:center;
	color:#fff;
	border:none;
	font-weight:700;
	outline:none;
	cursor:pointer;
	-webkit-transition:all 0.4s;
	-moz-transition:all 0.4s;
	transition:all 0.4s;
}

この機能を実装するには、Google Mapsの埋め込み地図のコード(iframeタグ)を、次のようにgooglemapというクラス名(Javascriptの設定で変更可)が入ったdivタグで囲んで下さい。1ページに何個あっても大丈夫です。

<div class="googlemap">
	<iframe src="〜"></iframe>
</div>

使うのを止める時は、そのままスタイルシートとJavascriptを削除してしまえば大丈夫です。HTMLにgooglemapというクラス名の付いたdivタグは残りますが、デザインに何も影響を与えることがないはずです。

いかがでしたか?最近、このブログでは「記事内の埋め込み地図を如何に実用的にできるか?」を考えて、試行錯誤しています。やりすぎて逆に使いづらくなってしまうこともしばしばだったんですが、今回の縮めたり広げたりするアイデアは、我ながら良いんじゃないかなーと思ってシェアしてみました。よろしければ、使ってみて下さい!設置に関して分からないことがあれば、コメント欄で気軽に疑問点を教えて下さいね。

WEB制作

初心者でも分かる!なjQuery「TOPへ戻るボタン」の作り方
ソーシャルのJavascriptを1つにまとめて、非同期化処理を加える方法
表示速度が改善!CDNサービスのCloudFlareの登録手順をまとめました!
PHPとJSでソーシャルカウントを取得する方法まとめ(全9サイト)
Off→Onにするだけ!HTMLの転送量を減らす超簡単なphp.iniの設定!
HashgramからInstagramのURLと埋め込みコードを呼び出すwebサービス
Googleリッチスニペット対策!初心者向けSchema.org解説!
たった数分!ページ高速化のためhtaccessでキャッシュ設定は絶対やっておこう!
解説記事で使える!プログラムの公式ロゴ素材の配布ページまとめ
意外と簡単!早くやればよかったJavascript/CSSのgzip圧縮!
Instagramのハッシュタグ検索システム(日本語対応)
webサービス 40サイトの公式ロゴ配布ページまとめ
【スマホ対応】クリックすると音が鳴る!「あいさつボタン」の設置方法
自動でショートムービーを作成するアプリ「Qwiki」がブログにも埋め込めて超便利!
初心者でも分かる!な「モーダルウィンドウ」の作り方

この記事へのコメント

感想、ご指摘などお気軽にお寄せ下さい。「関連記事を書いた」という方はご報告いただければリンクします。

コメントを書き込む

  • コメント

※Twitter、Facebook、はてな、いずれかのアカウントをお持ちの方は、本人認証(ログイン)を行なうことができます。
※本人認証をすることで、書き込みの待ち時間なし、画像アップロード、アイコンなどが利用できます。
※認証時にサービスと連携しますが、名前とアイコン以外の情報を読み込んだり、また書き込みを行なうことはありません。連携で要求する権限は「公開情報の読み取り」のみです。

現在、1件のコメントがあります。

ポンダッド ポンダッド
2014.07.27 19:54

このコメントシステム。凄いなあって改めて。 iframe埋め込みサイズってどんなのがいいか迷いますね。スマホは縦長なんで、やっぱり正方形か縦長の長方形がいいのかなあ...。 試しにてきとーな写真アップします。

投稿した画像

記事の更新履歴

  • 記事を公開しました。
    2014/07/27 18:30

ブログの著者について

あらゆ

Yuta Arai(あらゆ)

足立区竹ノ塚在住の1982年生まれ。ウェブとラーメンが大好きです。
info@syncer.jp

あいさつボタン