Googleマップをカラー変更したりグレースケールや建物などのラベルをなくすカスタマイズ方法
web制作Googleマップを表示しているサイトでたまに見かけるのが、ベースカラーを変更していたり、グレースケール(モノクロ)で地名や建物の名称がないものです。
Google Maps APIを使うことで作成することができるので、簡単にですが作成方法をご紹介します。
デフォルト表示
まず、Googleマップを表示させるエリアを作ります。
<div id="gmap"></div>
続いて、Google Maps APIを読み込みます。
<script src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXX"></script>
続いて、指定の箇所にGoogleマップを表示させる処理を書きます。
<script>
function init() {
var latlng = new google.maps.LatLng(緯度, 経度);
var mapOptions = {
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmap'), mapOptions);
var mapMarker = new google.maps.Marker({
position: latlng,
map: map,
title: 'タイトル'
});
}
google.maps.event.addDomListener(window, 'load', init);
</script>
これで、デフォルト状態での表示ができました。
サンプルを見るカラー変更表示
デフォルト表示ができたところで、マップのベースカラーを変更してみます。
Googleマップを表示させる処理に、以下のように追記します。
<script>
function init() {
var latlng = new google.maps.LatLng(緯度, 経度);
var mapOptions = {
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmap'), mapOptions);
var mapMarker = new google.maps.Marker({
position: latlng,
map: map,
title: 'タイトル'
});
//ここから追加
var mapStyleOptions = [
{
stylers: [
{ hue: "#6699cc" },
{ saturation: -50 }
]
}
];
var lopanType = new google.maps.StyledMapType(mapStyleOptions);
map.mapTypes.set('sample', lopanType);
map.setMapTypeId('sample');
//ここまで追加
}
google.maps.event.addDomListener(window, 'load', init);
</script>
これで、カラー変更された表示になります。
サンプルを見るグレースケール表示
ベースカラーの変更ができたところで、今度はベースカラーをグレースケールにしてみます。
Googleマップを表示させる処理に、以下のように追記します。
<script>
function init() {
var latlng = new google.maps.LatLng(緯度, 経度);
var mapOptions = {
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmap'), mapOptions);
var mapMarker = new google.maps.Marker({
position: latlng,
map: map,
title: 'タイトル'
});
var mapStyleOptions = [
{
//ここから変更
stylers: [
{ saturation: -100 }
]
//ここまで変更
}
];
var lopanType = new google.maps.StyledMapType(mapStyleOptions);
map.mapTypes.set('sample', lopanType);
map.setMapTypeId('sample');
}
google.maps.event.addDomListener(window, 'load', init);
</script>
これで、グレースケールでの表示になります。
サンプルを見るラベルを消す
続いては、グレースケールにしたマップの建物や地名などのラベルを非表示にします。
Googleマップを表示させる処理に、以下のように追記します。
<script>
function init() {
var latlng = new google.maps.LatLng(緯度, 経度);
var mapOptions = {
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmap'), mapOptions);
var mapMarker = new google.maps.Marker({
position: latlng,
map: map,
title: 'タイトル'
});
var mapStyleOptions = [
{
stylers: [{ saturation: -100 }]
}
//ここから追加
,{
featureType: 'all',
elementType: 'labels',
stylers: [{ visibility: 'off' }]
}
//ここまで追加
];
var lopanType = new google.maps.StyledMapType(mapStyleOptions);
map.mapTypes.set('sample', lopanType);
map.setMapTypeId('sample');
}
google.maps.event.addDomListener(window, 'load', init);
</script>
これで、ラベルが非表示になります。
サンプルを見るまとめ
個人的に、サイトでよく見るGoogleマップのベースカラーを変更する、グレースケール表示にする、ラベルを非表示にするといったカスタマイズの方法をまとめてみましたが、グレースケールでラベル非表示にするとなんだかとても味気ない感じになってしまいますね(笑)
コードとしては、マップ表示部分の記述が多いもののそれ以外の部分は意外と簡単にできました。しかし、2018年7月16日以降GoogleマップのAPIキーの取得が完全に必須となってしまったので、APIキー未取得の場合にはちょっと手間がかかってしまいます。デザイン的な要望がなければAPIキーが不要のGoogleマップからの埋め込み(iframe形式)が簡単かもしれませんね。
Googleマップ APIキー取得方法について参考記事はこちら
コメント