1. Googleマップとは
Googleマップとは、米Googleが提供する無料のデジタル地図サービスであり、経路案内、店舗検索、ストリートビューなどの機能を持っています。パソコンやスマートフォンから、世界中の地図やリアルタイムの交通情報を簡単に確認できます。
WebサイトではアクセスマップなどにGoogleマップをよく使用します。しかし、デフォルトのGoogleマップでは、Webサイトのデザインに合ないことがあります。今回は、Google APIを使用して、Googleマップの色とアイコンをオリジナルに変更して、Webサイトに埋め込みする方法を紹介します。
2. Google APIとは
Google APIとは、Googleが提供するさまざまなサービスや機能(Google Maps、YouTube、Google Cloudなど)を、外部のアプリやウェブサイトから利用できるようにする仕組みのことです。
3. 主なGoogle API
Google Maps API
Google Maps API とは、Googleマップの機能を自分のウェブサイトやアプリに組み込むための仕組みです。主な機能として、地図の表示、ルート検索、場所の検索ができます。利用には設定が必要です。
Google Cloud APIs
Google Cloud APIs とは、Google Cloud の各種サービスをプログラムから操作・連携するためのウェブインターフェース(Web API)の総称です。コンピューティング、ストレージ、AI・機械学習などの機能をアプリに追加できます。
Google Workspace API
Google Workspace APIとは、GmailやGoogleドライブ、カレンダーなどのGoogle製アプリの機能やデータを、外部のプログラムやシステムから操作・連携できるようにする仕組みです。Gmailでの自動メール送受信、スプレッドシートのデータ更新、ユーザー管理などを自動化できます。
4. Google cloud consoleにログイン
それでは、Google Cloud consoleにログインして、作業を進めていきます。

出典 : Google Cloud Console![]()
Google Cloud consoleとは、Google Cloudの各種サービスやリソースを一元管理するためのウェブベースの管理画面です。主な機能として、プロジェクトの作成、利用料金の確認、アクセス権の管理が行えます。
今回は、プロジェクト作成、課金アカウント作成をした状態から説明していきます。
5. Maps JavaScript API有効
まずは、マップを作成する準備をします。Maps JavaScript APIを有効にして、APIキーを特定のWebサイトに制限をかけます。
まずGoogle Cloud Consoleにログインします。メニューからAPIとサービス>ライブラリをクリックします。検索ボックスに、Maps JavaScript APIと入力します。Maps JavaScript APIが表示されるので、有効にします。

メニューからAPIとサービス>ライブラリをクリック

Maps JavaScript APIを有効
6. APIキーを特定のWebサイトに制限
APIキーを特定のWebサイトに制限する方法を紹介します。Maps JavaScript APIのメニューからAPIとサービス>認証情報をクリックします。設定するAPIキーをクリックします。
アプリケーションの制限をウェブサイトに設定します。ウェブサイトのAddボタンをクリックして、使用するWebサイトのドメインを入力して、保存ボタンをクリックします。URLの最後を/*に設定することで、指定ドメイン内の全てのパスで使用できます。

APIとサービス>認証情報をクリック

設定するAPIキーをクリックします。

アプリケーションの制限をウェブサイトに設定

ウェブサイトのAddボタンをクリック

使用するWebサイトのドメインを入力し、保存ボタンをクリック
7. Googleマップのスタイルを作成
次に、Googleマップのスタイルを作成します。マップID作成、地図スタイル作成、マップにスタイル反映の3段階で作成していきます。
7-1. マップID作成
まず、マップIDを作成します。メニューからGoogle Maps Platform>概要をクリックします。左のメニューからマップ管理をクリックします。上のマップIDを作成ボタンをクリックします。新しいマップID作成ページが表示されます。
名前に任意の名前を入力します。地図の種類は、JavaScriptに設定します。ベクターのラジオボタンにチェックを入れ、保存ボタンをクリックします。これでマップIDが作成されました。

Google Maps Platform>概要をクリック

マップIDを作成ボタンをクリック

名前に任意の名前を入力し、地図の種類をJavaScriptに設定し、ベクターのラジオボタンにチェックを入れ、保存ボタンをクリック

マップIDが作成される
7-2. 地図のスタイルを作成
次に地図のスタイルを作成します。メニューの地図のスタイルをクリックします。スタイルを作成ボタンをクリックします。モードをライトに設定し、オプションのテーマ、モノクロをチェックし、カスタマイズボタンをクリックします。

地図のスタイルページの、スタイルを作成ボタンをクリック

モードをライトに設定し、オプションのテーマ、モノクロをチェックし、カスタマイズボタンをクリック
7-3. 地図のスタイル設定
地図のスタイル設定をしていきます。左の検索ボックスに公園と入力します。右側に公園の設定項目が表示されるので、塗りつぶしの色、ピンの塗りつぶしの色、テキストの塗りつぶしの色をレッドに設定します。同じようにゴルフコース、スポーツ複合施設、スポーツ競技場の色もレッドに設定します。

左の検索ボックスに公園と入力

塗りつぶしの色、ピンの塗りつぶしの色、テキストの塗りつぶしの色をレッドに設定

ゴルフコース、スポーツ複合施設、スポーツ競技場の色もレッドに設定
次に、左のメニューのエンターテイメントをクリックします。項目が表示されるので、歴史にゆかりがある場所、博物館の塗りつぶしの色、ピンの塗りつぶしの色、テキストの塗りつぶしの色をレッドに設定します。右上の保存ボタンをクリックします。これでスタイル作成完了です。

歴史にゆかりがある場所、博物館の塗りつぶしの色、ピンの塗りつぶしの色、テキストの塗りつぶしの色をレッドに設定

右上の保存ボタンをクリックします。これでスタイル作成完了
7-4. マップのスタイルを変更
マップのスタイルを作成したものに変更します。マップの管理をクリックし、スタイルを変更したいマップの名前をクリックします。ライトモードの鉛筆マークをクリックします。作成した地図スタイルが表示されるので、選択し、完了ボタンをクリックします。これで、マップのスタイルが変更されます。

マップの管理をクリックし、スタイルを変更したいマップの名前をクリック

ライトモードの鉛筆マークをクリックし、作成した地図スタイルを選択し、完了ボタンをクリック

マップのスタイルが変更
8. HTMLに埋め込み
作成したマップをHTMLに埋め込みます。まずは、完成図です。マップの中心にロゴを吹き出しで入れています。作成したスタイルのマップが表示されます。

8-1. HTML
まずHTMLに地図を描画したいdivタグにIDを指定します。Google Maps JavaScript API を読み込むためのスクリプトを記述します。
<!-- 地図を描画するコンテナ。高さはCSSで指定します -->
<div id="map"></div>
<!--
Google Maps JavaScript API の読み込みスクリプト
- key: Google Cloud で発行した API キーを指定してください
- v: 利用するバージョン。特に理由がなければ "weekly" のままで大丈夫です
この読み込みで、JavaScript 側から google.maps.importLibrary(...) が使えるようになります
-->
<script>
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "YOUR_API_KEY",
v: "weekly",
});
</script>8-2. CSS
まずmapで、地図を表示する大きさを指定します。gm-markerで吹き出しのスタイルを指定します。ロゴの大きさは5emに指定しました。
/* マップ */
#map{
width: 100vw;
height: 70vh;
}
/* 吹き出しの共通スタイル */
.gm-marker {
position: absolute;
left: 0;
top: 0;
padding: 7px;
opacity: 0.9;
transform: translate(-50%, calc(-100% - 9px)); /* 下辺の中央(しっぽ先)を座標に合わせる */
}
/* しっぽ(三角形) */
.gm-marker::after {
content: "";
display: block;
position: absolute;
left: 50%;
bottom: -9px;
width: 10px;
height: 10px;
clip-path: polygon(0 0, 100% 0, 50% 100%);
transform: translateX(-50%);
}
/* カラー */
.gm-marker.is-origin,
.gm-marker.is-origin::after {
background: #333;
}
/* ロゴ */
.gm-marker-ttl img{
width: 5em;
height: auto;
}8-3. JavaScript
JavaScriptファイルを作成し、HTMLに読み込みます。MAP_IDに作成したマップIDを入力します。ORIJINに座標を入力します。
(async () => {
/* =========================
設定
========================= */
const MAP_ID = "YOUR_MAP_ID"; // Cloud Console で作成した Map ID
const ORIGIN = { lat: 36.69308924617705, lng: 137.19187501011473 }; // 座標
const DEFAULT_ZOOM = 15; // PC画面の初期表示の拡大レベル
const MOBILE_ZOOM = 14; // スマホ画面(幅<=767px)の初期表示の拡大レベル
/* =========================
ライブラリ読み込み(新方式)
========================= */
const { Map, Polyline } = await google.maps.importLibrary("maps");
const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
/* =========================
マップ生成
- 初期表示の拡大レベルは matchMedia で初期判定
- centerは中点
========================= */
const map = new Map(document.getElementById("map"), {
zoom: window.matchMedia("(max-width: 767px)").matches ? MOBILE_ZOOM : DEFAULT_ZOOM, // 地図の拡大レベル(数値が大きいほど拡大)
center: {
lat: 36.69308924617705,
lng: 137.19187501011473
}, // 地図の初期表示位置(中心座標)
mapId: MAP_ID, // 使用するマップスタイルのID(Cloud Consoleで発行)
zoomControl: true, // ズームボタンの表示(+ / -)
cameraControl: false, // 新しいカメラコントロールUIの表示(ズーム+上下左右移動)
mapTypeControl: false, // 地図/航空写真などの切替UIの表示
scaleControl: false, // 縮尺バーの表示(1kmスケールなど)
streetViewControl: false, // ストリートビュー用アイコンの表示(人型),
clickableIcons: false // ランドマークや建物クリック時の吹き出しの表示
});
function createMarker(className) {
const el = document.createElement("div");
el.className = `gm-marker ${className}`;
el.innerHTML = `
<div class="gm-marker-ttl"><img src="images/common/cxg_logo.svg"></div>
`;
return el;
}
const markerOrigin = createMarker("is-origin");
// 出発地点のカスタムマーカーを追加
new AdvancedMarkerElement({
map, // 表示する対象の地図オブジェクト
position: ORIGIN, // マーカーを置く緯度経度
content: markerOrigin, // 吹き出しHTML要素(カスタムマーカーの中身)
collisionBehavior: google.maps.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
// 重なり時の表示優先度:駅名ラベル等よりこのマーカーを優先表示
});
})();9. まとめ
以上で今回の説明は終了です。今回のデザインはあくまで一例で、Webサイトに合わせて色々変更することができます。施設や道路など細かく指定して色変更ができるので大変便利です。
このほかに、出発地と目的地を指定して、ルート表示をすることもできます。WebサイトでGoogleマップを導入する場合は、Google APIで、デザイン的なマップを作成してはいかがでしょうか。