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はかなり見やすくなります。


Visual Studio Codeのエクスプローラー上でファイル・フォルダの複製ができるようになる拡張機能「Duplicate action」
WordPressで「予約投稿の失敗」となってしまう場合の対処方法
ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
ウェブ上でLaTeXで数式をキレイにプレビューするJavaScriptライブラリ「MathJax」
「epel-release」インストール後にyum installで「Cannot retrieve metalink for repository」と表示される場合の対処法
gulpでSSI(サーバーサイドインクルード)を使用する「connect-ssi」
「Dart Sass」「LibSass」「Ruby Sass」などSassの種類や記法に関するまとめ
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
MacVim-Kaoriyaのインストール方法
Visual Studio Codeで英単語のスペルチェックをしてくれる拡張機能「Code Spell Checker」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け