APIを使ってGoogleマップの色を変えてみよう!

投稿日
  • コーディング

4月もあっというまに最終日となり、現在ゴールデンウィーク真っ只中です。
色々な行楽地に行かれる方も多いのではないでしょうか?
そんな時に活用するのがGoogleマップ。WEBサイトにもGoogleマップが埋め込まれてるのが当たり前になってきました。
この時、通常のマップではなく少しカスタマイズされたGoogleマップであると、ユーザーにより興味を持たせることが出来ると思います。

ということで、今回はGoogleマップの簡単なカスタマイズについてご紹介いたします!

カスタマイズの前に

GoogleマップのAPIには多くの種類が存在しますが、マップの表示のカスタマイズには「Google Maps JavaScript API」を使用します。
まずはじめにこのAPIを有効にしたAPIキーの取得が必要となるのですが、今回はこの説明は省略させていただきます。
(APIの取得の方法は近日公開予定)

マップを表示させてみよう

「千里の道も一歩から」ということで、まずは一番簡単なマップを表示させてみましょう。

<div id="map" class="gMap" style="height:300px;"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=APIキー&callback=initMap"></script>
<script>
function initMap() {
    var latlng = {
            lat: 36.661999,
            lng: 137.31315
        },
        map = new google.maps.Map(document.getElementById('map'), {
            center: latlng,
            zoom: 8
        }),
        marker = new google.maps.Marker({
            position: latlng,
            map: map
        });
}
</script>

まずGoogleマップを表示するDIV要素を用意します。このDIV要素の大きさをCSSで定義します。
次にAPIを読み込みます。その時APIキーの設定とコールバック関数名(例ではinitMap)を自身のケースに合わせて設定します。
コールバック関数initMapはAPIが完全に読み込まれた後で実行されます。マップの設定などはこの関数内に記載していくことになります。

まず地図の中心地とマーカー位置を指定するための緯度軽度をlatlng変数に格納します。(変数化する必要がなければそのまま直接記載してもOKです)
次に「google.maps.Map」クラスを使ってマップオブジェクトを作成します。
1つ目の引数にマップを表示させる要素を指定し、2つ目の引数にはマップのオプションを記載します。
今回は最低限必要な「center(マップの中心地)」と「zoom(マップの拡大レベル)」のみ指定しています。

これだけでマップは表示されるのですが、今回はさらにマーカーを「google.maps.Marker」クラスにて生成しています。

マップの色を変えてみよう

まずは簡単にマップを表示させてみましたが、これだけですとGoogleマップの「地図を埋め込む」機能でIframeを使用するのと変わらないですよね。
というわけで「地図を埋め込む」機能では実現できない、マップの色の変更を試してみます。

{
    center: latlng,
    zoom: 8,
    styles: [{
        featureType: 'all',
        elementType: 'all',
        stylers: [{
            hue: '#00ff00' //16進数のRGB値を記載
        }, {
            saturation: -50 //-100〜100の値を記載
        }, {
            lightness: 0 //-100〜100の値を記載
        }, {
            gamma: 1 //0.01〜10.0の値を記載
        }]
    }]
}

マップの色が緑色っぽく変わりましたね。
ソースコードはMapオブジェクトを生成する際のオプション(第2引数)のみを記載しています。今回追加したのは「styles」というスタイルオプションの部分です。
「featureType」、「elementType」、「stylers」の3つの要素から構成されており、「featureType」では変更するマップ上の要素を、「elementType」では要素のさらに細かい区分を、「stylers」では実際の色味を指定します。

今回は地図上のすべての要素の色味を等しく変更するために、featureTypeとelementTypeをallとしています。ただしfeatureTypeとelementTypeはデフォルトで"all"となっているため、実際にはこの記述は必要ありません。

色味の指定は「色相(hue)・彩度(saturation)・明度(lightness)」モデルが使用されており、まずは基本色をhueで指定し、saturationとlightnessの変化率を記載する形になります。

マップの色をさらに変えてみよう

stylesオプションですがその名の通り配列形式となっており、複数のスタイルを適用することができます。
以下の例は先ほどの変更に加えて、海の色を暗い灰色に変えています。

{
    center: latlng,
    zoom: 8,
    styles: [{
        featureType: 'all',
        elementType: 'all',
        stylers: [{
            hue: '#00ff00'
        }, {
            saturation: -50
        }, {
            lightness: 0
        }, {
            gamma: 1
        }],

    }, {
        featureType: 'water',
        elementType: 'all',
        stylers: [{
            color: '#666666'
        }],

    }]
}

先ほどの記述に「featureType」を「water」に変えたスタイルを追加しています。
waterとは「水域」のことで、海や川、湖などが対象となります。
またstylersには「色相・彩度・明度」モデルによる指定ではなく「color」による絶対値の指定を行っています。
「featureType」に「all」を指定している時に「color」による絶対値指定を行うと、マップが全てその色で埋め尽くされてしまいますが、要素を指定している場合にはこのように使用できます。
他のfeatureTypeなどスタイルに関する詳細については以下から確認できます。

スタイル リファレンス


Googleマップの色のカスタマイズ、いかがでしたでしょうか?
サイトのオリジナリティをより強調するためにも、ぜひ取り入れていきたいですね。