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


MacでCLIツールをインストールするときに行うターミナルでの「パスを通す」とは一体なにか?
WordPressでbloginfo()の一部パラメーターの廃止・非推奨に注意!
W3 Total Cacheをレスポンシブデザインのテーマで使用する時の注意ポイント!!【WordPress】
「Dart Sass」「LibSass」「Ruby Sass」などSassの種類や記法に関するまとめ
Visual Studio Codeでパス補完機能を細かく設定して自分好みにできる拡張機能「Path Autocomplete」
横幅が広がったときの挙動が変わる!CSS Gridの「auto-fill」と「auto-fit」の違い
Backlogで2段階認証を設定後、SourceTreeでアカウントエラーが発生する場合の対処法
SVGを操作するためのCSSプロパティまとめ
Vue CLIをインストールしたのに「command not found: vue」と表示されてしまう場合の対処法
HTMLタグの入力をラクにするスニペット集
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
AirPodsで片耳を外しても再生が止まらないようにする方法
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法