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


スマホやPCにプッシュ通知をしてくれる「Push7」をブログに追加する方法
gulpでPostCSSを使う方法
.htaccessを使って、httpからhttpsへリダイレクトする設定方法
Visual Studio Codeの設定を複数の端末間で同期する「Settings Sync」機能の使い方
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
Backlogで2段階認証を設定後、SourceTreeでアカウントエラーが発生する場合の対処法
WordPressで「予約投稿の失敗」となってしまう場合の対処方法
Vue.jsでtemplateタグ内にscriptやstyleタグを生成する方法|Tags with side effect are ignored
PS Auto Sitemapを使って自分のブログのサイトマップを作成する
iTerm2で起動時に左上に表示される「Tip of the Day(今日のTip)」を非表示にする方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう