
Google Mapsでユーザビリティを損なわないためにやっておきたい事
サイト内に用意された地図の利用はデスクトップからとは限らずスマートフォンやタブレットからの方がむしろ多いと思います。そこで重要になるのがレスポンシブデザインに対応してどのウィンドウサイズでもユーザビリティが損なわれないように地図を表示させる事です。と言っても複雑な事はせず手短に Google Maps JavaScript APIを利用した地図の実装をする方法を紹介します。
Google Mapsをサイトで使用する方法
Google Mapsの APIキーの取得の手順は飛ばして表示したい場所の座標を取得します。まずは Google マップで座標を取得したい位置にカーゾルを移動させて右クリックから「この場所について」を選択します。画面の下の方に小さいパネルが現れます。その中の住所の下に表示されているカンマで区切られた2つの数値が座標です。左の数値が緯度でそれに続く数値が経度になります。
座標が取得できたらサイトに Google Mapsを表示させる工程に移ります。スマートフォンなどのウィンドウの横幅が狭い場合はページをスクロールさせた時に地図をフリックしてしまいスクロールの妨げになる場合があるので対策としてGoogle マップへのリンクボタンを用意してリンク先で地図を操作してもらう方法をとります。マウスを使った操作の場合にはマウスホイールでページをスクロールした時にカーソルが地図に重なると縮尺の変更が行われてしまうのでマウスホイールからの操作をオフにします。さらに地図に色をつけてみますが建物や道路、アイコンなどが見分けづらくユーザビリティ的にはあまり良くないかもしれません。
<div class="map-embed"> <div id="map-canvas">google maps</div> <div class="map-link"><a class="button-1" href="https://www.google.co.jp/maps/?ll=35.443308,139.640083&z=17&q=横浜スタジアム" target="_blank">Google マップで見る</a></div> </div>
map-canvasは地図を表示させるための場所です。map-linkはウィンドウサイズの横幅が狭い時に Google マップへのリンクボタンを表示させるための場所です。
.gmap-embed { height: 500px; width: 100%; } #gmap-canvas { height: 100%; width: 100%; } .gmap-link { display: none; } @media screen and (max-width: 568px) { .gmap-embed { display: none; } .gmap-link { display: block; } }
地図の表示領域は親要素の横幅に合わせ縦幅は 500pxにします。Google マップへのリンクボタンと地図はメディアクエリを使いウィンドウサイズの横幅が 568px以下の場合に表示と非表示を切り替えます。
var MY_MAPTYPE_ID = 'Blue Map';//地図の名前を指定する var gmapsOptions = { mapElemId: 'gmap-canvas',//表示させる要素を指定する center: new google.maps.LatLng(35.443308, 139.640083),//緯度と経度を指定する zoom: 17,//縮尺を指定する scaleControl: true,//スケールコントロールの表示と非表示を指定する scrollwheel: false,//マウスホイール操作による縮尺の変更を許可するかの設定をする mapTypeControlOptions: { mapTypeIds: google.maps.MapTypeId.ROADMAP//マップタイプコントロールを表示させない場合の指定 }, mapTypeId: MY_MAPTYPE_ID, mapStyle: {//地図のスタイルを指定する name: {name: MY_MAPTYPE_ID}, style: [ {'stylers': [ {'hue': '#263FDB'}, {'saturation': -70} ], 'elementType': 'all', 'featureType': 'all' } ] }, infoWindowText: '<span><span style="font-size: 1.5em;"><a href="http://www.yokohama-stadium.co.jp/" target="_blank">横浜スタジアム</a></span><br>収容能力 30,039人<br>内野:22,321席 外野:5,365席 立ち見:2,353人</span>'//マーカーをクリックした時に表示される情報を指定する }; google.maps.event.addDomListener(window, 'load', function(){ var mapdiv = document.getElementById(gmapsOptions.mapElemId); if(!mapdiv) return; var map = new google.maps.Map(mapdiv, gmapsOptions); var customMapType = new google.maps.StyledMapType(gmapsOptions.mapStyle.style, gmapsOptions.mapStyle.name); map.mapTypes.set(gmapsOptions.mapTypeId, customMapType); var marker = new google.maps.Marker({ position: gmapsOptions.center, map: map }); var infoWindow = new google.maps.InfoWindow({ content: gmapsOptions.infoWindowText }); google.maps.event.addListener(marker, 'click', function() { infoWindow.open(map, marker); }); google.maps.event.addDomListener(window, 'resize', function(){ map.panTo(gmapsOptions.center); }); });
- 1行目
表示する地図の名前を指定します。この名前はマップタイプコントロールでスタイルを変更するボタンにも使用しています。 - 3行目
地図のオプションです。 - 41行目
ページの読み込みが完了したタイミングで地図の表示をします。 - 50行目
スタイルを指定した地図をセットします。 - 63行目
マーカーのクリックイベントを検知して情報を表示させます。 - 68行目
リサイズイベントを検知してウィンドウサイズが変更された場合も指定した座標の位置を地図の表示領域の中央に配置させます。
マップのスタイルの指定方法はこちらが参考になります。
デモ Google Mapsを表示させる
地図には色をつけます。ウィンドウの横幅が568px以下になると Google Mapへのリンクボタンを表示してリンク先で地図を表示します。
Google マップへのリンクに使われるパラメーター
パラメーターは色々用意されているようですがとりあえずこれだけあれば地図の表示には困らないというものをピックアップしておきます。
パラメーター | 説明 | 例 |
---|---|---|
ll=緯度,経度 | 中心点の指定をする。 | ?ll=35.443308,139.640083 |
z=整数 | 縮尺の指定をする。 | ?z=17 |
q=緯度,経度 | マーカーの指定をする。 | ?q=35.443308,139.640083 |
q=文字列 | 文字列で検索した内容を表示する。 | ?q=横浜スタジアム |
f=q | 標準の検索パネルを表示する。 | ?f=q |
f=d | ルート検索パネルを表示する。 | ?f=d |
t=m | 市街地図で表示する。 | ?t=m |
t=k | 航空写真で表示する。 | ?t=k |
t=p | 地形図で表示する。 | ?t=p |