Google Maps APIでマップの見た目をカスタマイズする方法

Google Maps APIを使うと、マップ上に表示させるピンの種類を変えたり、道路や建物・水域のスタイルを変更して見た目をかなり柔軟にカスタマイズできます。
今回はその方法についてまとめておきます。
基本となるマップ
Google Maps APIをまだ取得していない場合は、過去に紹介しているので、取得しておいてください。
今回は下記のコードのstylesオプションに、オプション内容を指定してカスタマイズします。
<div id="map"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=APIキー&callback=initMap"></script>
<script>
function initMap() {
let map = new google.maps.Map(document.getElementById('map'), {
center: {lat: - 35.681382, lng: 139.766083},
zoom: 8,
styles: [
{
// 今回のstylesオプションを指定する場所
},
],
});
}
</script>
<style>
#map { width: 100%; height: 420px; }
</style>ちなみに、前回の記事でも紹介しましたが、centerが表示するマップの緯度・経度、zoomがマップの拡大率になります。
stylesオプションの基本
stylesオプションは、大きく分けて下記の3つを1組の波括弧{}で囲んで指定します。
| 項目 | 内容 | 具体例 |
|---|---|---|
| featureType | 反映する地形情報を指定 | 道路・建物・水域を表示するかどうかの設定 |
| elementType | 反映する要素を指定 | ラベルやアイコンなどを表示するかどうかの設定 (特定の種類のラベルだけ非表示も可能) |
| stylers | 上記2つ以外のスタイルを指定 | 色の変更など、見た目を変更する設定 |
オプションを指定するときは、「featureType(どこの)」「elementType(なにを)」を指定して、そのあとに「stylers(どんな見た目にするのか)」で1セットです。
{}を増やすことで特定の要素にだけ他とは違うスタイルを反映したりもできます。
styles: [
{
featureType: 'どこの',
elementType: 'なにを',
stylers: [
// どんな見た目にするのか
],
},
{
featureType: 'どこの',
elementType: 'なにを',
stylers: [
// どんな見た目にするのか
],
},
],ちなみに、featureTypeとelementTypeは、省略するとすべての要素が表示(デフォルトのGoogle Mapsと同じ)になります。
featureTypeで指定できる値
featureTypeでは場所に関しての情報を指定します。
| 値 | 内容 | 備考 |
|---|---|---|
| all | すべて | |
| administrative | 国や都市などの行政が関わる領域 | |
| administrative.country | administrativeの国だけ | |
| administrative.land_parcel | administrativeの区画だけ | |
| administrative.locality | administrativeの地区や市など | |
| administrative.neighborhood | administrativeの周辺地域 | |
| administrative.province | administrativeの州や県 | |
| landscape | 山や砂漠などの風景情報 | |
| landscape.man_made | landscapeの人工建築物 | |
| landscape.natural | landscapeの自然物 | |
| landscape.natural.landcover | landscapeの自然物の中の土地被覆物 | |
| landscape.natural.terrain | landscapeの自然物の中の地形 | |
| poi | 観光施設や学校・講演などのスポット | Points of interestの略 |
| poi.attraction | poiの観光名所 | |
| poi.business | poiの企業や店舗情報 | |
| poi.government | poiの政府機関 | |
| poi.medical | poiの病院や警察などの緊急スポット | |
| poi.park | poiの公園 | |
| poi.place_of_worship | poiの教会などの宗教施設 | |
| poi.school | poiの学校 | |
| poi.sports_complex | poiのスポーツ施設 | |
| road | 道路 | |
| road.arterial | roadの幹線道路 | |
| road.highway | roadの公道 | |
| road.highway.controlled_access | roadの公道の中の高速道路など | 有料などで出入りが制限されている道路 |
| road.local | roadの地方道 | |
| transit | 公共交通機関(電車の路線や駅) | |
| transit.line | transitの路線 | |
| transit.station | transitの駅 | 空港やバスの停留所なども含む |
| transit.station.airport | transitの空港 | |
| transit.station.bus | transitのバスの停留所 | |
| transit.station.rail | transitの鉄道 | |
| water | 水域 |
elementTypeで指定できる値
featureTypeでは場所を指定したあとに、elementTypeでその場所にある何を変更するのか指定します。
| 値 | 内容 |
|---|---|
| all | すべて |
| geometry | 対象の図形や塗りや線 |
| geometry.fill | geometryの塗り |
| geometry.stroke | geometryの線 |
| labels | 建物のラベルやアイコン |
| labels.icon | labelsのアイコン |
| labels.text | labelsのテキスト |
| labels.text.fill | labelsのテキストの塗り |
| labels.text.stroke | labelsのテキストの線 |
stylersで指定できる値
最後にstylersで見た目を指定します。
| 値 | 内容 | 指定方法 |
|---|---|---|
| hue | 色の設定 | #付きのカラーコード6桁で指定(3桁の省略などは無効) |
| lightness | 明度の設定 | -100〜100の間の数値で指定 |
| saturation | 彩度の設定 | -100〜100の間の数値で指定 |
| gamma | ガンマ補正の設定 | 0.01〜10.0の間の数値で指定 |
| invert_lightness | 明度の反転の設定 | true(明度を反転)、false(反転しない)の真偽値で指定 |
| visibility | 表示状態の設定 | “on”(表示)、”off”(非表示)、”simplified”(単純化して表示)の文字列で指定 |
| color | 色の設定 | #付きのカラーコード6桁で指定(3桁の省略などは無効) |
| weight | 地物の厚み | pxで単位の数値で指定 |
これでGoogle Mapsにあるどの要素に対しても色を変えたり、表示・非表示を切り替えたりできます。
見た目はカスタマイズする必要はなくても、サイトによってはvisibilityを使って不要なピンを削除しておけば、Google Mapsはかなり見やすくなります。


Vue Routerでページ遷移後にトーストを表示させる方法
Visual Studio CodeでCSVの編集を見やすく行う拡張機能「Edit csv」
WordPressの自動バックグラウンド更新を無効にする方法とその注意点
npm-scriptsでSCSSをコンパイルする環境を構築する方法
iTerm2で起動時に左上に表示される「Tip of the Day(今日のTip)」を非表示にする方法
Mac向けのミニマルでお洒落なデザインのGitクライアント「Gitfox」
WordPressのプラグインはどれを入れたら良い?とりあえず最初に導入をオススメするプラグイン一覧
Visual Studio Codeで開始タグを修正すると自動で閉じタグも修正してくれる拡張機能「Auto Rename Tag」
Visual Studio Codeで対応する括弧に色を付けて見やすくする環境設定
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定